如何检查多维数组是否具有特定数组
How to check if a multidimensional array has a specific array?
如何检查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使用严格相等(===
)进行比较。你的元素必须是完全相同的对象。
var a = [1,1];
var b = [a,[1,2]];
b.indexOf(a)// 0
因为a === a
,
b.indexOf([1,1])// -1
因为[1,1]和a
是不同的对象所以它们不是严格相等的
MDN文档
要做你想做的事,你需要做一些更复杂的事情。您可以循环遍历这些值并使用诸如what in this question's answers之类的内容来进行比较
indexOf
如果在数组中没有找到匹配,则返回-1。你的数组a
不包含元素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));
});
相关文章:
- 查找对象数组是否包含其中一个标记的最快方法
- 检查数组是否包含
- 确定数组是否包含偶数
- 在 JavaScript 中连接字符串或数组是否更快
- 检查对象数组是否具有所有必需的键
- 检查数组是否包含指定的对象
- 在通过套接字发送到客户端之前压缩中等大小的javascript数组是否值得
- 检查数组是否有空元素
- 检查输入框的数组是否为空
- 如何检查JSON数组是否等于
- 检查数组是否已定义并且具有长度
- 检查数组是否包含特定对象
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- 如何检查子集数组是否包含超集数组之一
- 检查对象数组是否包含布尔值true/false
- 检查数组是否在MongoDB文档中包含帖子ID
- 检查数组是否包含允许或不允许的字符
- 检查 javascript 数组是否不仅包含空值
- 在循环时修改数组是否安全
- 列表/数组是否有效 JSON