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



我在这里遇到一种情况,我想省略嵌套的地图并在一行中完成它。可以使用链条或任何其他方式来完成吗?

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;
});

我不想要那么多嵌套地图调用.

因为您正在就地修改您的项目,所以我会说这是可能的:

_.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();

杰斯菲德尔

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

最新更新