2017-11-18 164 views
0

我需要找到一个数组中是否包含了另一个数组或不是另一个数组..如何检查数组包含在javascript

var array = ['a',['b','c','d']]; 

IM无法找到。所以任何人都可以帮我解决这个问题。

谢谢。

+4

的可能的复制[我如何检查如果一个数组包含在JavaScript对象?(https://stackoverflow.com/questions/237104/how-do-i-check -if-an-array-includes-an-object-in-javascript) –

回答

4

您可以使用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']));

+0

thx @Nina Scholz thq重播..其工作正常....请你解释一下。什么是“array.some(a => Array.isArray(a))”中的'some'&'a'“ – Nani

+0

它是一个带[arrow function](https://developer.mozilla)的回调短版本。组织/ EN-US /文档/网络/的JavaScript /参考/函数/ Arrow_functions)。该数组的每个项目都会调用该函数,并检查该项目。如果检查返回'true',则迭代停止,因为它搜索单个[truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)返回值。 –

+0

thq @Nina Scholz ...我的问题解决了 – Nani

0

你可以试试这个方法:

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'])); 
0

如果你不只是需要一个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));