gpt4 book ai didi

javascript - 检查数组是否包含另一个数组的每个元素

转载 作者:行者123 更新时间:2023-11-30 14:02:14 25 4
gpt4 key购买 nike

例如,我想检查给定数组是否包含第二个数组的每个元素

['Laptop', 'PC', 'Ipad', 'Telephone', 'Smart Watch']
['Laptop,' 'PC', 'Smart Watch'] //true
['Laptop', 'Ipad', 'Banana'] //false

我试过这段代码:

var arr = [1, 2, 3];
var check = [3, 4, 5];

var found = false;
for (var i = 0; i < check.length; i++) {
if (arr.indexOf(check[i]) > -1) {
found = true;
break;
}
}
alert(found);

它可以工作,但不是我想要的那样,即使在父数组中只找到一个来自子元素的元素,它也会发出 true 警报。那么我怎样才能实现我想要的呢?

最佳答案

你可以拿一个Set并检查 Array#every .

const check = (a, b) => b.every(Set.prototype.has, new Set(a));

var array1 = ['Laptop', 'PC', 'Ipad', 'Telephone', 'Smart Watch'],
array2 = ['Laptop', 'PC', 'Smart Watch'],
array3 = ['Laptop', 'Ipad', 'Banana'];

console.log(check(array1, array2)); // true
console.log(check(array1, array3)); // false

ES5(IE 安全)

function check(a, b) {
var items = a.reduce(function (o, v) {
o[v] = true;
return o;
}, Object.create(null));
return b.every(function (v) { return items[v]; });
}

var array1 = ['Laptop', 'PC', 'Ipad', 'Telephone', 'Smart Watch'],
array2 = ['Laptop', 'PC', 'Smart Watch'],
array3 = ['Laptop', 'Ipad', 'Banana'];

console.log(check(array1, array2)); // true
console.log(check(array1, array3)); // false

关于javascript - 检查数组是否包含另一个数组的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56136286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com