Javascript嵌套三元运算符
如果有人能给我解释一下,我遗漏了一些东西。我试图用三元运算符的方式重新编写现有代码。 我收到以下控制台错误:Javascript嵌套三元运算符,javascript,conditional-operator,Javascript,Conditional Operator,如果有人能给我解释一下,我遗漏了一些东西。我试图用三元运算符的方式重新编写现有代码。 我收到以下控制台错误: 未捕获的语法错误:意外标记} 我知道有一个条件格式不正确,我似乎找不到。所以我不确定我遗漏了什么,或者我是否可能误解了过滤函数中的某些内容?不是吗?item.verified==true不自动返回为true的对象吗 var engagement = "social"; var audience = [{ 'verified': true, 'name': 'Steve'},
未捕获的语法错误:意外标记}
我知道有一个条件格式不正确,我似乎找不到。所以我不确定我遗漏了什么,或者我是否可能误解了过滤函数中的某些内容?不是吗?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;
}
});
这是我一直想玩的小提琴:
三元运算符如下所示:
something = (condition) ? a_value : a_different_value;
this.engagement === 'social-crm' ? item.verified === true :
( this.engagement === 'social' ? item.verified === false :
(this.engagement === 'all' ? item : null))
您忘记了
:上一个案例中的值不同。三元运算符如下所示:
something = (condition) ? a_value : a_different_value;
this.engagement === 'social-crm' ? item.verified === true :
( this.engagement === 'social' ? item.verified === false :
(this.engagement === 'all' ? item : null))
您忘记了:在最后一个案例中有一个不同的值。试试这个
必须有@Quentin所指出的三元运算符的条件
data = audience.filter((item) => { (engagement === "social") ?
item.verified === true : (engagement === 'social-crm') ?
item.verified === false : (engagement === 'all')?
item : null})
试试这个
必须有@Quentin所指出的三元运算符的条件
data = audience.filter((item) => { (engagement === "social") ?
item.verified === true : (engagement === 'social-crm') ?
item.verified === false : (engagement === 'all')?
item : null})
是的。你的语法不对。为了理解代码不起作用的原因,如果您重新编写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
那么,现在你可以像这样重写你的表达式:
something = (condition) ? a_value : a_different_value;
this.engagement === 'social-crm' ? item.verified === true :
( this.engagement === 'social' ? item.verified === false :
(this.engagement === 'all' ? item : null))
括号在这里很重要,因为它与上面嵌套的if-else非常相似
还要注意,对于最内部的表达式,必须在else中指定返回值。我已将其设置为null,但您可以返回所需的内容。请注意,这是代码失败的实际原因。如果答案很长,我很抱歉,但我想帮助您理解嵌套三元运算符 是的。你的语法不对。为了理解代码不起作用的原因,如果您重新编写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
那么,现在你可以像这样重写你的表达式:
something = (condition) ? a_value : a_different_value;
this.engagement === 'social-crm' ? item.verified === true :
( this.engagement === 'social' ? item.verified === false :
(this.engagement === 'all' ? item : null))
括号在这里很重要,因为它与上面嵌套的if-else非常相似
还要注意,对于最内部的表达式,必须在else中指定返回值。我已将其设置为null,但您可以返回所需的内容。请注意,这是代码失败的实际原因。如果答案很长,我很抱歉,但我想帮助您理解嵌套三元运算符 “我正试图以三元运算符的方式重新编写现有代码。”-不要。正如你所注意到的,这很难理解。不要为维护代码的人做更多的工作。他们会因此恨你的。那个人很可能是你,但比你大6个月。谢谢,我也有同感。然而,公司想要合并标准,并告诉我要更改它#death你可以更改为这个数据=受众。过滤器((项目)=>(参与==“社交”)?项目。验证===true:(参与=='social crm')?项目。验证===false:(参与=='all')?项目:null)@RobG所以在其他情况下,我想再次返回整个对象。这有意义吗?过滤器
函数需要真实或错误的返回值。返回true
或项
会产生相同的结果@昆汀有史以来最好的评论:)“我正试图以三元运算符的方式重新编写现有代码。”-不要。正如你所注意到的,这很难理解。不要为维护代码的人做更多的工作。他们会因此恨你的。那个人很可能是你,但比你大6个月。谢谢,我也有同感。然而,公司想要合并标准,并告诉我要更改它#death你可以更改为这个数据=受众。过滤器((项目)=>(参与==“社交”)?项目。验证===true:(参与=='social crm')?项目。验证===false:(参与=='all')?项目:null)@RobG所以在其他情况下,我想再次返回整个对象。这有意义吗?过滤器
函数需要真实或错误的返回值。返回true
或项
会产生相同的结果@昆汀有史以来最好的评论:)