我需要将一个字符串数组的id与一个对象数组进行比较。我需要将匹配id的对象返回到对象中。我需要使用linq.js而不知道如何做到这一点。
我需要比较的字符串数组:
selectedIds = ["080A8", "032A10", "025A10"]
数组我需要遍历并返回匹配的对象:
[
{"id":"009B4",
"supply":{
"builder":[
{"id":"3629",
"name":"sample name",
"color":"red"}
]
}
},
{"id":"00434",
"supply":{
"builder":[
{"id":"34529",
"name":"sample name two",
"color":"black"}
]
}
}
]
我需要匹配顶层的ID。
这是我想要开始的:
var selectedObjects = Enumerable.From(array).Where("m=>m.id == '" + + "'").ToArray();
答案 0 :(得分:2)
你不需要Linq.js或任何图书馆来实现你的目标。这是解决 O(n)时间问题的解决方案,其中 n 是最大数组的大小。
var selectedIds = ["080A8", "032A10", "025A10"];
var list = [
{"id": "009B4",
"supply": {
"builder": [
{"id": "3629",
"name": "sample name",
"color": "red"}
]
}
},
{"id": "00434",
"supply": {
"builder": [
{"id": "34529",
"name": "sample name two",
"color": "black"}
]
}
}
];
var idMap = selectedIds.reduce(function (map, id) {
map[id] = true;
return map;
}, {});
var selectedObjects = list.filter(function(item){
return !!idMap[item.id];
});