【问题标题】:Go through array of objects and return objects that have Ids from an array of Ids遍历对象数组并从 Ids 数组中返回具有 Ids 的对象
【发布时间】:2016-06-14 20:32:26
【问题描述】:

我想充分利用 Lodash 的功能,但我不明白为什么我不能用 Lodash 执行此操作。

我有一个包含 38 个对象的数组,它们都有 ID。我还有另一个 ID 数组。我需要将它们映射到对象数组,并在新的对象数组中使用它们。

我正在寻找这样的解决方案:

 var workOrder.model.Lands = [{
                ID: "123",
                LandArea: "",
                LandAreaDescription: "something",
                LandAreaNo: 0,
                Value: null,
                Text: null,
                Status: true,
                GeoJsonData: null,
                GeoJsonCenter: null,
                Blocks: Array[3]
            },...];

var landIDs = [1, 2, 3, 4];


_.each(workOrder.model.Lands, function(land){
     _.each(landIDs, function(id){
         console.log(id);
         if(land.ID === id){
              workOrder.selectedLandArea.push(land);
          }
     });
});

这不起作用,实际上将 Lands 收藏中的所有物品归还给我。取出这些物体的最佳解决方案是什么?

没有查询

提前致谢

更新 添加变量以更清晰

【问题讨论】:

  • @PatrickRoberts 我已经更新了这个
  • @Keeano 你的例子仍然没有多大意义。 landIDs 都不等于第一个对象中的 ID,它们甚至不是同一类型。您是否尝试根据landIDs 的顺序重新排序数组?
  • 你想用你的landIDs中包含的id过滤你的对象数组吗?

标签: javascript arrays angularjs object lodash


【解决方案1】:

Demo

下面是相关代码(假设objs是对象数组,ids是id数组)

_.filter(objs, function(obj) {
  return _.includes(ids, obj.ID);
});

从逻辑上讲,您正在根据另一个集合中包含的成员键过滤一个集合。

【讨论】:

  • 谢谢@user01 这回答了我的问题,因为我正在寻找一种 100% 的 lodash 方法。
猜你喜欢
  • 2021-10-08
  • 1970-01-01
  • 2016-07-28
  • 2021-12-16
  • 1970-01-01
  • 2018-06-13
  • 2020-07-21
  • 2021-09-22
  • 2018-07-26
相关资源
最近更新 更多