如何使用javascript或lodash过滤嵌套数组

时间:2016-06-16 19:25:38

标签: javascript arrays underscore.js 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 个答案:

答案 0 :(得分:3)

您应该为filter提供一个谓词,用于检查数组是否包含'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);




答案 1 :(得分:0)

您在数组中缺少逗号。你正在处理一个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);
&#13;
&#13;
&#13;

答案 2 :(得分: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);