2017-11-18 162 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));