如何检查是否arrays
有array
?
var arrays = [[1, 1], [2, 2]];
var array = [1,1];
[1, 1] === [1, 1]; // false
arrays.includes(array); // false
arrays.indexOf(array); // -1
如何检查是否arrays
有array
?
var arrays = [[1, 1], [2, 2]];
var array = [1,1];
[1, 1] === [1, 1]; // false
arrays.includes(array); // false
arrays.indexOf(array); // -1
indexOf
如果在数组中找不到匹配项,则返回 -1。您的数组a
不包含 element b
。
编辑:
为了澄清@JonathanLonowski 所说的内容,没有匹配的原因是因为您正在进行严格的比较,比较引用而不是值。
<Array>.some
方法测试多维数组中的至少一个数组是否通过了提供的函数实现的测试。
<Array>.every
方法测试数组中的所有数组项是否通过提供的函数实现的测试。
这两种方法结合起来可以检查多维数组中的所有项目是否值得寻找。
const checkArray = (arrays, array) => arrays.some(a => {
return (a.length > array.length ? a : array).every((_, i) => a[i] === array[i]);
});
const arrays = [[0, 1], [2, 2], [0, 3, 2, 1]];
[
[0, 1], // true
[2, 2], // true
[0, 3, 2, 1], // true
[1, 0, 3, 2, 1], // false
[2, 2, 1], // false
[0, 0], // false
[1, 2], // false
[0, 1, 2] // false
].forEach(array => {
console.log(checkArray(arrays, array));
});