如何使用 linq.js 将字符串数组与对象数组进行比较

how to compare a string array against a array of objects using linq.js

我需要将 ID 字符串数组与对象数组进行比较。我需要将具有匹配 ID 的对象 returned 到一个对象中。我需要使用 linq.js,但不确定该怎么做。

我需要比较的字符串数组:

selectedIds = ["080A8", "032A10", "025A10"]

我需要遍历数组并 return 匹配对象:

[
 {"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();

您不需要 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];
});