Вложенные массивы для вызова карты и сокращения повторяющихся карт для одного объекта - PullRequest
0 голосов
/ 20 мая 2018

У меня есть ситуация, когда я хочу опустить вложенные карты и сделать это в одном вкладыше.Это можно сделать с помощью цепочки или любым другим способом.

 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 голосов
/ 20 мая 2018

Поскольку вы изменяете свои элементы на месте, я бы сказал, что это возможно:

  _.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.

...