请问有没有办法缩短这个三元语句?
I would like to ask if there's a way to shorten this ternary statement?
我想知道如何在这里缩短三元语句的可能性? TIA
data_items.attributes.promo_banner.promo_join_button_style === 'primary-flat' ? 'primary-flat' : data_items.attributes.promo_banner.promo_join_button_style === 'secondary-flat' ? 'secondary-flat' : data_items.attributes.promo_banner.promo_join_button_style === 'tertiary-flat' ? 'tertiary-flat' : data_items.attributes.promo_banner.promo_join_button_style === 'primary-animated' ? 'primary-animated' : data_items.attributes.promo_banner.promo_join_button_style === 'secondary-animated' ? 'secondary-animated' : data_items.attributes.promo_banner.promo_join_button_style === 'tertiary-animated' ? 'tertiary-animated' : 'error' "
你可以这样做:
const dataStyle = data_items.attributes.promo_banner.promo_join_button_style;
dataStyle === "primary-flat"
? "primary-flat"
: dataStyle === "secondary-flat"
? "secondary-flat"
: dataStyle === "tertiary-flat"
? "tertiary-flat"
: dataStyle === "primary-animated"
? "primary-animated"
: dataStyle === "secondary-animated"
? "secondary-animated"
: dataStyle === "tertiary-animated"
? "tertiary-animated"
: "error";
顺便说一句,你不应该使用这么长的三元运算符。对于此类代码,请尝试使用 switch 语句。
为了便于阅读,请使用较短的变量名来存储值。然后,由于当匹配其中一种样式时返回输入值,您可以将样式放入数组中,然后可以使用 Array.includes
一次测试它们:
button_styles = ['primary-flat', 'secondary-flat', 'tertiary-flat', 'primary-animated', 'secondary-animated', 'tertiary-animated' ];
promo_button_style = data_items.attributes.promo_banner.promo_join_button_style;
button_styles.includes(promo_button_style) ? promo_button_style : 'error'
请注意,对于大型数组,Set
(使用 has
)会更有效:
button_styles = new Set(['primary-flat', 'secondary-flat', ...])
button_styles.has(promo_button_style) ? promo_button_style : 'error'
我想知道如何在这里缩短三元语句的可能性? TIA
data_items.attributes.promo_banner.promo_join_button_style === 'primary-flat' ? 'primary-flat' : data_items.attributes.promo_banner.promo_join_button_style === 'secondary-flat' ? 'secondary-flat' : data_items.attributes.promo_banner.promo_join_button_style === 'tertiary-flat' ? 'tertiary-flat' : data_items.attributes.promo_banner.promo_join_button_style === 'primary-animated' ? 'primary-animated' : data_items.attributes.promo_banner.promo_join_button_style === 'secondary-animated' ? 'secondary-animated' : data_items.attributes.promo_banner.promo_join_button_style === 'tertiary-animated' ? 'tertiary-animated' : 'error' "
你可以这样做:
const dataStyle = data_items.attributes.promo_banner.promo_join_button_style;
dataStyle === "primary-flat"
? "primary-flat"
: dataStyle === "secondary-flat"
? "secondary-flat"
: dataStyle === "tertiary-flat"
? "tertiary-flat"
: dataStyle === "primary-animated"
? "primary-animated"
: dataStyle === "secondary-animated"
? "secondary-animated"
: dataStyle === "tertiary-animated"
? "tertiary-animated"
: "error";
顺便说一句,你不应该使用这么长的三元运算符。对于此类代码,请尝试使用 switch 语句。
为了便于阅读,请使用较短的变量名来存储值。然后,由于当匹配其中一种样式时返回输入值,您可以将样式放入数组中,然后可以使用 Array.includes
一次测试它们:
button_styles = ['primary-flat', 'secondary-flat', 'tertiary-flat', 'primary-animated', 'secondary-animated', 'tertiary-animated' ];
promo_button_style = data_items.attributes.promo_banner.promo_join_button_style;
button_styles.includes(promo_button_style) ? promo_button_style : 'error'
请注意,对于大型数组,Set
(使用 has
)会更有效:
button_styles = new Set(['primary-flat', 'secondary-flat', ...])
button_styles.has(promo_button_style) ? promo_button_style : 'error'