Сгладить массив на основе количества подчиненных - PullRequest
1 голос
/ 24 марта 2020

У меня есть решение проблемы, но есть ли лучший способ сделать это

var arr1 = [
    {
        name: 'Ajinkya',
        job: 'Engineer 3',
        tasks: ['task1', 'task2', 'task3']
    },
    {
        name: 'Vidhya',
        job: 'Engineer 1',
        tasks: ['task1', 'task2']
    },
    {
        name: 'Saravana',
        job: 'Engineer 2',
        tasks: ['task2', 'task3']
    },
]

var arr2=[];

arr1.map(e1=>{
    e1['tasks'].forEach(e2=>{
        arr2.push({ name: e1["name"], job: e1["name"], tasks: e2  })
    })
})
console.log(arr2);

Просто хотел перебрать массив, как в приведенном выше выводе, даже иметь решение, но просто задумался о лучшем подходе.

1 Ответ

5 голосов
/ 24 марта 2020

Вы можете использовать flatMap() и map() вместо tasks для каждого объекта

var arr1 = [
    {
        name: 'Ajinkya',
        job: 'Engineer 3',
        tasks: ['task1', 'task2', 'task3']
    },
    {
        name: 'Vidhya',
        job: 'Engineer 1',
        tasks: ['task1', 'task2']
    },
    {
        name: 'Saravana',
        job: 'Engineer 2',
        tasks: ['task2', 'task3']
    },
]

const res = arr1.flatMap(x => x.tasks.map(tasks => ({...x, tasks})));
console.log(res)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...