嵌套数组调用map并缩短单个对象的重复映射省略属性

时间:2018-05-20 10:52:22

标签: lodash

我有一个情况,我想省略嵌套的地图,并在一个班轮完成它。可以使用链或任何其他方式完成。

 self.workorder.tasklist = _.map(self.workorder.tasklists, function (tasklist) {
                    tasklist.tasklistGroups = _.map(tasklist.tasklistGroups, function (tasklistGroup, tgKey) {
                        tasklistGroup.tasklistItems = _.map(tasklistGroup.tasklistItems, function (taskListItem, tKey) {
                            taskListItem = _.omit(taskListItem, ["open"]);
                            return taskListItem;
                        });
                        return tasklistGroup;
                    });
                    return tasklist;
                });

我不想要这么多嵌套地图调用。

1 个答案:

答案 0 :(得分:0)

因为你正在修改你的物品我会说这是可能的:

  _.chain(self.workorder.tasklists).map(function(tasklist) {
    return tasklist.tasklistGroups;
  }).flatten().map(function(group) {
    return group.tasklistItems
  }).flatten().forEach(function(item) {
    delete item.open;
  }).value();

Jsfiddle

我们的想法是将您的数组展平到最后一级(项目级别),然后使用forEach修改它们。