我想检查数组是否包含值数组而不是值,例如
stdout
在var arr = [1, 2, 3];
arr.contains([1, 2]); // returns true
// and
arr.contains([1, 5]); // must be false
underscore
中有一个名为contains的方法,但它在javascript中的作用类似_.contains
,而不是返回true和false,只找到一个值,而不是一个数组
在javascript中还有一个方法Array.prototype.includes(),它也采用单输入而不是数组
答案 0 :(得分:1)
实际上我想检查第二个数组是否包含所有键 我要查看第一个数组
AND
例如
[1,2,3,4].contains([1,4])
必须返回true,因为[1,2,3,4].contains([1,9])
必须返回false,希望这是有道理的, 我现在使用下划线交叉点和第二个数组 交叉结果必须相同,其程序仍然很长......
您可以在Array.prototype.includes()
循环中使用for
var arr = [1,2,3,4];
function contains(arr) {
for (var i = 0, included = true; i < arr.length
; included = included && this.includes(arr[i]), i++);
return included
}
Array.prototype.contains = contains;
console.log(arr.contains([1, 4]), arr.contains([9, 1]), arr.contains([1, 5]))
&#13;
答案 1 :(得分:0)
您可以使用every和indexOf
的组合[1, 2].every(function(e) { return [1, 2, 3].indexOf(e) !== -1 });
将评估为true和
[1, 5].every(function(e) { return [1, 2, 3].indexOf(e) !== -1 });
将评估为false
使用箭头功能
的ES6语法会短得多[1, 2].every(e => [1, 2, 3].indexOf(e) !== -1)
答案 2 :(得分:0)
您可以使用every
:
function contains(arr, arr2) {
return arr2.every(function (el) {
return arr.indexOf(el) > -1;
});
}
var arr = [1, 2, 3];
contains(arr, [1, 2]); // true
contains(arr, [1, 5]); // false
或者,如果您需要[].includes
- 样式语法,可以在原型中添加方法,但也可以使用其他方法 - 我已经使用了hasAll
。
if (!('hasAll' in Array.prototype)) {
Array.prototype.hasAll = function(arr) {
return arr.every(function(el) {
return this.indexOf(el) > -1;
}, this);
}
arr.hasAll([1, 2])); // true
arr.hasAll([1, 5])); // false
答案 3 :(得分:0)
试试这个简单的例子
var arr = [1, 2, 3];
var searchArr = [1,2];
var isSearchArrAvailable = searchArr.filter( function(value){ if ( arr.indexOf( value ) == -1 ) { return true } else { return false; } } ).length == 0;
console.log( "is SearchArr Available " + isSearchArrAvailable );//this will print true
var searchArr = [1,5]
将打印false
。
您可以将其重构为函数
function hasEveryElement(arr, searchArr)
{
return searchArr.filter( function(value){ if ( arr.indexOf( value ) == -1 ) { return true } else { return false; } } ).length == 0;
}
console.log( hasEveryElement([1,2,3], [1,2]) ) ;
console.log( hasEveryElement([1,2,3], [1,4]) ) ;
答案 4 :(得分:0)
Try this:
var arr = [1,2,3];
var temparr=[1,2];
var st=ArrOfArrSt(arr,temparr);
function ArrOfArrSt(arr,temparr){
var stArr= new Array();
if(temparr.length>0)
for(j in temparr){
if(arr.indexOf(temparr[j])==-1){
stArr.push('0');
}
}
return (stArr.length>0)?0:1; //whole array 0=not belong to / 1=belong to
}