在条件表达式中不必要地使用布尔文字
Unnecessary use of Boolean literals in conditional expression
我有一个函数可以检查是否在数组中找到了一个值。我要return一个真假。当前代码有效但抛出 js-standerd/es-lint 错误 "Unnecessary use of boolean literals in conditional expression"
我在这里搜索了大量这些错误消息,但似乎无法理解它。对我来说,这表示 'If the value is found return true otherwise false'
let found = value.find(val => {
return val === item
})
return found ? true : false
我试过了
return value.find(val => {
return val === item
}) || false
它有效但不 return 如果找到布尔值,它是 return 项。
我知道我可以通过多种方式完成这项工作,但我只是想弄清楚我的代码是否错误或不正确,或者 es-lint 是否错误地标记了它。
return value.some(val => { return val === item; });
linter 正在抱怨这个:
return found ? true : false
应该读作“如果 found
为真 return true
否则 return false
”。这种结构被称为 'ternary' 运算符,并且从 C 的早期就开始使用,如果不是更早的话。 ?
运算符计算左侧的条件,如果条件计算结果为真,则 return 是第一个参数,否则 return 是第二个参数,参数之间用冒号分隔.
您的代码的问题在于 return 条件本身等同于 return 布尔文字 true
或 false
。因此,检查和文字是不必要的,可以删除。但是,因为这是 javascript 你可能想在 return 之前对条件进行双重否定,以强制它成为布尔值。因此,结果如下所示:
return !!found
这更容易阅读,并且将来实施错误或被误解的可能性更小。
当然,这可以更进一步:
return !!value.find(val => val === item)
这样,你根本不需要在代码中引入符号[=13=]。此外,some()
会更好,但我认为你的问题更多是关于三元运算符而不是如何搜索列表。
我有一个函数可以检查是否在数组中找到了一个值。我要return一个真假。当前代码有效但抛出 js-standerd/es-lint 错误 "Unnecessary use of boolean literals in conditional expression" 我在这里搜索了大量这些错误消息,但似乎无法理解它。对我来说,这表示 'If the value is found return true otherwise false'
let found = value.find(val => {
return val === item
})
return found ? true : false
我试过了
return value.find(val => {
return val === item
}) || false
它有效但不 return 如果找到布尔值,它是 return 项。
我知道我可以通过多种方式完成这项工作,但我只是想弄清楚我的代码是否错误或不正确,或者 es-lint 是否错误地标记了它。
return value.some(val => { return val === item; });
linter 正在抱怨这个:
return found ? true : false
应该读作“如果 found
为真 return true
否则 return false
”。这种结构被称为 'ternary' 运算符,并且从 C 的早期就开始使用,如果不是更早的话。 ?
运算符计算左侧的条件,如果条件计算结果为真,则 return 是第一个参数,否则 return 是第二个参数,参数之间用冒号分隔.
您的代码的问题在于 return 条件本身等同于 return 布尔文字 true
或 false
。因此,检查和文字是不必要的,可以删除。但是,因为这是 javascript 你可能想在 return 之前对条件进行双重否定,以强制它成为布尔值。因此,结果如下所示:
return !!found
这更容易阅读,并且将来实施错误或被误解的可能性更小。
当然,这可以更进一步:
return !!value.find(val => val === item)
这样,你根本不需要在代码中引入符号[=13=]。此外,some()
会更好,但我认为你的问题更多是关于三元运算符而不是如何搜索列表。