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()
。酷!的确不是打字错误:)