繁体   English   中英

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

[英]How to filter nested arrays using javascript or 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']]

有人可以帮我吗

您应该提供一个谓词进行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); 

您在数组中缺少逗号。 您正在处理2d数组,这是一个真正可以使用的简单对象。 只需使用for循环在每个数组中查找项目[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); 

嗯,现代的方法是;

 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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM