var inventory = [
{ id: 1, name: 'apples', quantity: true },
{ id: 2, name: 'apples', quantity: false },
{ id: 3, name: 'cherries', quantity: true }
];
var result = inventory.find(inv => inv.id === 5) ? true: false;
Sonarqube建议简化以下表达式:
var result = inventory.find(inv => inv.id === 5) ? true: false;
我不知道如何简化它。谁能帮忙简化一下吗?Sonarqube建议布尔文字不应是多余的。
Sonarqube指出基于条件返回直接布尔值很明显。考虑以下:
if (condition) {
return true;
} else {
return false;
}
或同等学历:
return (condition) ? true : false;
condition
本身的计算结果为true
或false
,因此就像说“如果为true则为true,如果为false则为false”。因此,仅返回条件本身的结果就足够了,如下所示:
return (condition);
现在,您的特定示例通过find()
在布尔上下文(由?:
运算符表示)中使用返回值,使隐式合并为布尔值。由于在找不到所请求的对象时find()
返回undefined
,因此您的代码利用falsy值undefined
解析?:
为true或false分支。您似乎有兴趣检查该值是否存在于数组中,这意味着是否find()
返回除以外的值undefined
,这意味着:
var result = inventory.find(inv => inv.id === 5) !== undefined;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句