【发布时间】:2017-05-30 09:36:12
【问题描述】:
我需要二维数组,所以我做了一个嵌套数组,因为 JavaScript 不允许它们。
它们看起来像这样:
var myArray = [
[1, 0],
[1, 1],
[1, 3],
[2, 4]
]
如何检查这个数组是否包含 vanilla JS 中的特定元素(即这些 [0,1] 数组之一)?
这是我尝试过的,但没有成功(一切都返回false)(编辑:我在 sn-p 中包含了答案):
var myArray = [
[1, 0],
[1, 1],
[1, 3],
[2, 4]
]
var itemTrue = [2, 4];
var itemFalse = [4, 4];
function contains(a, obj) {
var i = a.length;
while (i--) {
if (a[i] === obj) {
return true;
}
}
return false;
}
// EDIT: first answer's solution
function isArrayInArray(x, check) {
for (var i = 0, len = x.length; i < len; i++) {
if (x[i][0] === check[0] && x[i][1] === check[1]) {
return true;
}
}
return false;
}
// EDIT: accepted answer's solution
function isArrayInArray2(x, check) {
var result = x.find(function(ele) {
return (JSON.stringify(ele) === JSON.stringify(check));
})
return result !=null
}
console.log("true :" + myArray.includes(itemTrue));
console.log("false :" + myArray.includes(itemFalse));
console.log("true :" + (myArray.indexOf(itemTrue) != -1));
console.log("false :" + (myArray.indexOf(itemFalse) != -1));
console.log("true :" + contains(myArray, itemTrue));
console.log("false :" + contains(myArray, itemFalse));
// EDIT: first answer's solution
console.log("true :" + isArrayInArray(myArray, itemTrue));
console.log("false :" + isArrayInArray(myArray, itemFalse));
// EDIT: accepted answer's solution
console.log("true :" + isArrayInArray2(myArray, itemTrue));
console.log("false :" + isArrayInArray2(myArray, itemFalse));
它可能看起来像重复,但我找不到类似的问题。如果是,请随意标记它。
【问题讨论】:
-
我读了那个问题,但它并没有解决我的问题。请参阅添加了该问题答案 2 解决方案的更新后的 sn-p。
-
在内部,函数会检查
if (paramArray[i] == searchElement),但失败了,因为你不能使用==比较两个数组,所以你不能使用includes来做到这一点。 -
再次,考虑到这是一个特定情况(伪二维数组),这不是 stackoverflow.com/questions/6315180/… 的重复,它没有直接解决我的问题。请删除标志
标签: javascript arrays