如何简化这个表达?

用户名
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本身的计算结果为truefalse,因此就像说“如果为true则为true,如果为false则为false”。因此,仅返回条件本身的结果就足够了,如下所示:

return (condition);

现在,您的特定示例通过find()在布尔上下文(由?:运算符表示)中使用返回值,使隐式合并为布尔值由于在找不到所请求的对象时find()返回undefined,因此您的代码利用falsyundefined解析?:为true或false分支。您似乎有兴趣检查该值是否存在于数组中,这意味着是否find()返回除以外的值undefined,这意味着:

var result = inventory.find(inv => inv.id === 5) !== undefined;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章