首先,.includes
方法不适用于我的框架,所以我在这里省略它。
我有 checkIn(el,ar)
函数来检查 ar
中是否有 el
,如下所示:
function checkIn(el){
var check = false;
for (i = 0; i < ar.length; i++){
if(el === ar[i]){
check = true;
break;
};
};
return check;
};
工作正常。然后我想使用 .every
方法来检查给定数组的每个元素是否在另一个给定数组中
var x = [1,2,3];
var y = [1,2,3,4,5];
var check = x.every(checkIn(y))
check
需要为 true,但它不起作用?
最佳答案
.every
接受回调,其第一个参数是正在迭代的数组的元素。如果您希望能够使用
x.every(checkIn(y))
然后checkIn
应该返回一个可以用作回调的函数:
function checkIn(containingArr) {
return item => containingArr.includes(item);
};
var x = [1, 2, 3];
var y = [1, 2, 3, 4, 5];
console.log(x.every(checkIn(y))); // every item in x is in y; true
console.log([0].every(checkIn(y))); // 0 is not in y; false
或者,使用类似于 for
循环的内容:
function checkIn(ar) {
return el => {
var check = false;
for (i = 0; i < ar.length; i++) {
if (el === ar[i]) {
check = true;
break;
};
};
return check;
};
}
var x = [1, 2, 3];
var y = [1, 2, 3, 4, 5];
console.log(x.every(checkIn(y)));
console.log([0].every(checkIn(y)));
关于javascript - every 方法在 javascript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53679218/