使用下划线的_.contains ,我如何检查这两个值中的任何一个?
const valueToCheckFor = undefined || false; // I really thought this would work
const arr1 = [undefined, true, undefined]
_.contains(arr1, valueToCheckFor) => // true
const arr2 = [true, true, true]
_.contains(arr2, valueToCheckFor) => // false
const arr3 = [true, true, false]
_.contains(arr3, valueToCheckFor) => // false ???
期望:
如果出现 false
,则值应为 true或undefined
在数组中找到,而是得到 false
对于 arr3
我不确定是否_.contains(arr, value)
只能用来检查数组中的一个特定值吗?
最佳答案
此表达式只会将 false
分配给 valueToCheckFor
:
const valueToCheckFor = undefined || false;
console.log(valueToCheckFor);
此外,_.contains()
无法搜索多个值。
要搜索多个值,您需要一种可以接受谓词的方法,例如 find
、findIndex
或 some
(下划线或普通 js)。
此示例使用Array#some迭代数组,因为一旦谓词函数返回 true
,some
就会返回 true
。谓词使用 Array#includes检查当前值是否是我们正在寻找的值之一。
const containsMultipleValues = (arr, ...values) => // the values we want to search will be collected to the values array
arr.some(val => values.includes(val)); // check if any item in the arr is included in the values array
const arr1 = [undefined, true, undefined]
console.log(containsMultipleValues(arr1, false, undefined))
const arr2 = [true, true, true]
console.log(containsMultipleValues(arr2, false, undefined))
const arr3 = [true, true, false]
console.log(containsMultipleValues(arr3, false, undefined))
关于javascript - 使用下划线检查数组是否包含两个值之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47921290/