如何简化这个表达式?

How do I simplify this expression?

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 表示 return 根据条件直接布尔值是很明显的。考虑以下因素:

if (condition) {
    return true;
} else {
    return false;
}

或同等学历:

return (condition) ? true : false;

condition 本身计算为 truefalse,所以它就像说 'if true then true, if false then false'。因此,return 条件本身的结果就足够了,像这样:

return (condition);

现在,您的特定示例通过在布尔上下文中使用 find() return 值(由 ?: 运算符暗示)隐式合并为布尔值。由于 find() returns undefined 当未找到请求的对象时,您的代码使用 falsyundefined 值将 ?: 解析为真或假分支。您似乎有兴趣检查数组中是否存在该值,这意味着 find() return 是否是 undefined 之外的其他值,意思是:

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