因为 JavaScript 不允许二维数组,所以我创建了一个嵌套数组。
它们长成这个样子:
var myArray = [
[1, 0],
[1, 1],
[1, 3],
[2, 4]
]
我该如何在原生JS中检查此数组是否包含特定元素(例如这些
[0,1]
数组之一)?这是我尝试过的方式,但都没有成功(每个都返回
false
):(编辑:我在代码段中包含了答案):
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));
这可能看起来是重复的,但我找不到类似的问题。如果是,请随意标记为这样。
if (paramArray[i] == searchElement)
,但这会失败,因为您无法使用==
比较两个数组,因此您不能使用includes
来执行此操作。 - pushkin