2016-06-16 77 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);