javascript - 使用下划线检查数组是否包含两个值之一

标签 javascript arrays underscore.js

使用下划线的_.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 ,则值应为 trueundefined在数组中找到,而是得到 false对于 arr3

我不确定是否_.contains(arr, value)只能用来检查数组中的一个特定值吗?

最佳答案

此表达式只会将 false 分配给 valueToCheckFor:

const valueToCheckFor = undefined || false;

console.log(valueToCheckFor);

此外,_.contains() 无法搜索多个值。

要搜索多个值,您需要一种可以接受谓词的方法,例如 findfindIndexsome (下划线或普通 js)。

此示例使用Array#some迭代数组,因为一旦谓词函数返回 truesome 就会返回 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/

相关文章:

Javascript 数组通过合并/过滤重建

javascript - 如何使用 lodash/underscore 按多个嵌套字段排序?

Javascript/Underscore,将 bool 数组转换为字符串数组

javascript - 什么情况下函数不能访问全局变量?为什么?

javascript - 如何在javascript中模拟点击?

javascript - 如何使用chartJs自定义图表?

java - 不知道如何洗牌

c++ - 计算快速排序 C++ 中的比较和移动次数

javascript - $watch 未使用复选框检测模型更改

java - 获取 json 文件中的条目数