2016-06-16 50 views
0

我有洙許多嵌套的數組這樣如何篩選使用javascript或lodash

[['branch',12,'name','cofee'],['state',15,'name','tea'],['Country',12,'name','tea']['branch',15,'name','Choclate']] 

我要篩選其具有元件分支所以導致會是這樣

[['branch',12,'name','cofee'],['branch',15,'name','Choclate']] 
陣列嵌套的數組

有人可以幫我在這

回答

3

你應該提供一個謂詞filter它檢查是否數組連續ains 'branch'

如果你可以使用ES6,我會做:

const data = [ 
 
    ['branch', 12, 'name', 'cofee'], 
 
    ['state', 15, 'name', 'tea'], 
 
    ['Country', 12, 'name', 'tea'], 
 
    ['branch', 15, 'name', 'Choclate'] 
 
]; 
 

 
const processed = data.filter(d => (d.indexOf('branch') > -1)); 
 

 
console.log(processed);

如果您不能使用ES6:

const data = [ 
 
    ['branch', 12, 'name', 'cofee'], 
 
    ['state', 15, 'name', 'tea'], 
 
    ['Country', 12, 'name', 'tea'], 
 
    ['branch', 15, 'name', 'Choclate'] 
 
]; 
 

 
const processed = data.filter(function (d) { 
 
    return d.indexOf('branch') > -1; 
 
}); 
 

 
console.log(processed);

0

你是錯過了一個comm一個在你的數組中。你正在處理一個2d數組,一個真正使用的簡單對象。只需使用for循環在每個數組中尋找item [0]。

var div = document.createElement("div"); 
 
var myArray = [['branch',12,'name','cofee'],['state',15,'name','tea'],['Country',12,'name','tea'],['branch',15,'name','Choclate']]; 
 

 
var filteredArray = [[]]; 
 

 
for (var i = 0; i < myArray.length; i++) { 
 
    if(myArray[i][0] === 'branch'){ 
 
     filteredArray.push(myArray[i]); 
 

 
    } 
 
} 
 

 
var t = document.createTextNode(filteredArray); 
 

 
div.appendChild(t); 
 
document.body.appendChild(div);

0

好一個現代化的做法是;

var data = [['branch',12,'name','cofee'],['state',15,'name','tea'],['Country',12,'name','tea'],['branch',15,'name','Choclate']], 
 
filtered = data.filter(f => f.includes("branch")); 
 
console.log(filtered);