gpt4 book ai didi

JavaScript 嵌套三元运算符

转载 作者:行者123 更新时间:2023-11-28 14:50:23 49 4
gpt4 key购买 nike

如果有人可以向我解释一下,我错过了一些东西。我正在尝试将现有代码重写为三元运算符的方式。我收到以下控制台错误:

未捕获的语法错误:意外的标记}

据我所知,有一个格式不正确的条件,我似乎找不到。所以我不确定我错过了什么,或者我是否误解了过滤功能中的某些内容?不是吗? item.verified === true 不应该自动返回 true 的对象吗?

var engagement = "social";
var audience = [{ 'verified': true, 'name': 'Steve'},
{ 'verified': false, 'name': 'Phil'},
{ 'verified': true, 'name': 'Jason'}];
let data = [];

data = audience.filter((item) => {
(engagement === "social")
? item.verified === true
: (engagement === 'social-crm')
? item.verified === false
: (engagement === 'all')
? item
})

我理解的语法:

data = audience.filter((item) => {
if (this.engagement === 'social-crm') {
return item.verified === true;
} else if (this.engagement === 'social') {
return item.verified === false;
} else if (this.engagement === 'all') {
return item;
}
});

这是我一直在尝试玩的 fiddle : https://jsfiddle.net/phfilly/ya73e325/7/

最佳答案

是的。你的语法不正确。要了解代码不起作用的原因,如果您重写 if-else 将会有所帮助。声明一点。

if (this.engagement === 'social-crm') {
return item.verified === true;
} else if (this.engagement === 'social') {
return item.verified === false;
} else if (this.engagement === 'all') {
return item;
}

对此:

if(this.engagement === 'social-crm') { return item.verified === true; }
else {
if(this.engagement === 'social') {item.verified === false; }
else {
if(this.engagement === 'all') {return item;}
}
}

现在,三元运算符遵循类似的嵌套方式。

cond1 ? val1 : ( val2 )

哪里val2 => cond2 ? val3 : (val4)

哪里val4 => cond3 ? val5 : val6

所以,现在你可以像这样重写你的表达式:

this.engagement === 'social-crm' ? item.verified === true : 
(this.engagement === 'social' ? item.verified === false :
(this.engagement === 'all' ? item : null))

括号在这里很重要,因为它非常模仿上面的嵌套 if-else。

另请注意,对于最内部的表达式,必须在 else 中指定返回值。我已将其设置为 null,但您可以返回您想要的内容。请注意,这是您的代码失败的实际原因。如果答案很长,我深表歉意,但我想帮助您理解嵌套三元运算符。

关于JavaScript 嵌套三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716426/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com