我需要找到一个数组中是否包含了另一个数组或不是另一个数组..如何检查数组包含在javascript
var array = ['a',['b','c','d']];
IM无法找到。所以任何人都可以帮我解决这个问题。
谢谢。
我需要找到一个数组中是否包含了另一个数组或不是另一个数组..如何检查数组包含在javascript
var array = ['a',['b','c','d']];
IM无法找到。所以任何人都可以帮我解决这个问题。
谢谢。
您可以使用Array#some
迭代元素,并检查元素是否为Array.isArray
的数组。
function containsArray(array) {
return array.some(item => Array.isArray(item));
}
console.log(containsArray(['a', ['b', 'c', 'd']]));
console.log(containsArray(['a', 'b', 'c', 'd']));
ES5
function containsArray(array) {
return array.some(function (item) {
return Array.isArray(item);
});
}
console.log(containsArray(['a', ['b', 'c', 'd']]));
console.log(containsArray(['a', 'b', 'c', 'd']));
thx @Nina Scholz thq重播..其工作正常....请你解释一下。什么是“array.some(a => Array.isArray(a))”中的'some'&'a'“ – Nani
它是一个带[arrow function](https://developer.mozilla)的回调短版本。组织/ EN-US /文档/网络/的JavaScript /参考/函数/ Arrow_functions)。该数组的每个项目都会调用该函数,并检查该项目。如果检查返回'true',则迭代停止,因为它搜索单个[truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)返回值。 –
thq @Nina Scholz ...我的问题解决了 – Nani
你可以试试这个方法:
var array = ['a',['b','c','d']];
function contains(a, toFind) {
for (var i = 0; i < a.length; i++) {
if (equalArray(a[i], toFind)) {
return true;
}
}
return false;
}
function equalArray(a, b) {
if (a.length === b.length) {
for (var i = 0; i < a.length; i++) {
if (a[i] !== b[i]) {
return false;
}
}
return true;
} else {
return false;
}
}
alert(contains(array, ['b', 'c', 'd']));
如果你不只是需要一个boolean (true/false)
的回答,您还可以使用阵列find()方法随着Array.isArray()
返回内部阵列为好。看下面的例子。
EDIT 在你有与一个以上的内阵列阵列情况下则阵列滤波器()方法会更合适。
var arr = [3, 10, 18, [3, 4, 5, 8], 20];
var arr2 = [3, 10, 18, [3, 4, 5, 8], [1, 2], 20];
var arr3 = [1, 2, 3, 4];
function check(v) {
return (Array.isArray(v))?v:false;
}
console.log(arr.find(check));
console.log(arr2.filter(check));
console.log(arr3.find(check));
console.log(arr3.filter(check));
的可能的复制[我如何检查如果一个数组包含在JavaScript对象?(https://stackoverflow.com/questions/237104/how-do-i-check -if-an-array-includes-an-object-in-javascript) –