Javascript 迭代嵌套数组以匹配ID
我有一组数据是嵌套数组,这些数组可能是空的,或者它们实际上可能包含一个ID,如果其中一个数组ID与我比较的ID匹配,我想获取该数组中匹配的所有数据,并将其分配给要使用的变量 例如:Javascript 迭代嵌套数组以匹配ID,javascript,arrays,Javascript,Arrays,我有一组数据是嵌套数组,这些数组可能是空的,或者它们实际上可能包含一个ID,如果其中一个数组ID与我比较的ID匹配,我想获取该数组中匹配的所有数据,并将其分配给要使用的变量 例如: 数据=[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]类型为“事件”、“成员” id=123 匹配阵列= 对于(var i=0;iobj.id==id
数据=[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]类型为“事件”、“成员”
id=123
匹配阵列=
对于(var i=0;i
您可以使用方法过滤内部数组,并使用方法将过滤后的数组连接成一个数组
让数据=[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]id:“123”、“姓名”:“DARES HOUSE 2019”、“startDate”:null,“endDate”:null,“country”:null,“city”:null,“type:“Event”,“members”:null}]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[];
设id=123;
让matchedaray=data.flatMap(arr=>arr.filter(obj=>obj.id==id))
console.log(matchedArray)
您可以通过组合使用.map
、.filter
和.flat
var数据=[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]id:“123”、“姓名”:“DARES HOUSE 2019”、“startDate”:null,“endDate”:null,“country”:null,“city”:null,“type:“Event”,“members”:null}]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]
var-id=123;
var matchedaray=data.map(arr=>{
返回arr.filter(x=>x.id==id);
}).flat();
控制台日志(匹配阵列)
我建议使用而不是.filter
/.map
/.flatMap
。主要的好处是,它允许在找到元素时停止遍历数组
在具有大量数据的大型阵列上,它将更加高效(≈快50倍):
const data=[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]id:“123”、“姓名”:“DARES HOUSE 2019”、“startDate”:空,“endDate”:空,“country”:空,“city”:空,“type:“Event”,“members”:空}],[],[],[],[],[],[],[],[],[],[],[]
常数id=123;
让matchedaray=null;
数据部分((a)=>{
返回a.some((v)=>{
如果(v!=null&&v.id==id){
匹配阵列=a;
返回true;
}
});
});
控制台日志(匹配阵列)代码>使用Array#filter
ooohflatMap
以前没有发现过。美好的太神了我喜欢stackoverflow,因为这个原因,快速、准确的建议,我会确保我在实际使用之前完全理解这些方法。谢谢。匹配的数组返回空-我没有得到一个包含任何数据的数组。这是我的错,我在比较一个不存在的ID,这就是原因。我道歉。