Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用下划线检查数组是否包含这两个值之一_Javascript_Arrays_Underscore.js - Fatal编程技术网

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

Javascript 使用下划线检查数组是否包含这两个值之一,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,使用下划线,如何检查这两个值中的任何一个 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, valueToC

使用下划线,如何检查这两个值中的任何一个

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
undefined
,则值应为true,而对于
arr3


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

您可能不需要下划线,可以使用
数组.prototype.includes()

还是一个函数

function IsUndefOrFalse(arr){
  return arr.includes(undefined)  || arr.includes(false)
}

您可能不需要下划线,可以使用
Array.prototype.includes()

还是一个函数

function IsUndefOrFalse(arr){
  return arr.includes(undefined)  || arr.includes(false)
}

在您的示例中,valueToCheckFor的计算结果将为false,它不会同时包含这两个值

您需要做的是检查每个值是否包含一次:

const arr1=[未定义,真,未定义]
console.log(_.contains(arr1,未定义)| _.contains(arr1,false))//true
常量arr2=[true,true,true]
console.log(_.contains(arr2,未定义)| _.contains(arr2,false))//false
常量arr3=[真、真、假]
console.log(124; contains(arr3,未定义)| 124;包含(arr3,false))//true

在您的示例中,valueToCheckFor将计算为false,它不会同时包含这两个值

您需要做的是检查每个值是否包含一次:

const arr1=[未定义,真,未定义]
console.log(_.contains(arr1,未定义)| _.contains(arr1,false))//true
常量arr2=[true,true,true]
console.log(_.contains(arr2,未定义)| _.contains(arr2,false))//false
常量arr3=[真、真、假]
console.log(124; contains(arr3,未定义)| 124;包含(arr3,false))//true

此表达式仅将
false
分配给
值以检查以下各项:

const valueToCheckFor=undefined | | false;

console.log(用于检查的值)此表达式仅将
false
分配给
值以检查

const valueToCheckFor=undefined | | false;

console.log(用于检查的值)您可以使用交叉点检测数组中存在的可用匹配项,如下所示:

var orgArray = [ { tags : ["a1"] }, 
                 { tags : ["a2"] },
                 { tags : ["c1"] } ];
var matches = orgArray.filter(function(val) {
   return _.intersection(['a1','c1'], val.tags).length > 0;
});
console.log(matches);
console.log(matches.length);

您可以使用交叉点检测数组中存在的可用匹配项,如下所示:

var orgArray = [ { tags : ["a1"] }, 
                 { tags : ["a2"] },
                 { tags : ["c1"] } ];
var matches = orgArray.filter(function(val) {
   return _.intersection(['a1','c1'], val.tags).length > 0;
});
console.log(matches);
console.log(matches.length);

有趣的。。。什么是“arr.some()”
?好的?我没有办法
arr.some()
迭代数组,并对每个项应用谓词。每当谓词返回
true
,迭代就完成了,
some
返回
true
。如果谓词对所有项都失败,
some
返回
false
。答案还包括我使用过的方法的链接。哦!!我还以为那是个打字错误呢!我以前从未听说过
.some()
。酷!的确不是打字错误:)有趣。。。什么是“arr.some()”
?好的?我没有办法
arr.some()
迭代数组,并对每个项应用谓词。每当谓词返回
true
,迭代就完成了,
some
返回
true
。如果谓词对所有项都失败,
some
返回
false
。答案还包括我使用过的方法的链接。哦!!我还以为那是个打字错误呢!我以前从未听说过
.some()
。酷!的确不是打字错误:)