我有很多像这样的嵌套数组
[['branch',12,'name','cofee'],['state',15,'name','tea'],['Country',12,'name','tea']['branch',15,'name','Choclate']]
我想过滤具有元素分支的数组,所以结果会像这样
[['branch',12,'name','cofee'],['branch',15,'name','Choclate']]
任何人都可以帮我这个
答案 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;
答案 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);