Получить Массив из Массива Объектов из Массива Объектов - в новый Массив Объектов - PullRequest
0 голосов
/ 27 января 2020

У меня есть следующий массив объектов:

const arr = [
  {
    Name: 'TestName',
    Age: 50,
    OtherStuff: [
      {
        MainID: 1111,
        ParrentId: 1122
      },
      {
        MainID: 2222,
        ParrentId: 2233
      }
    ],
    Animal: 'Dog'
  },
  {
    Name: 'TestName2',
    Age: 20,
    OtherStuff: [
      {
        MainID: 3333,
        ParrentId: 3344
      }
    ],
    Animal: 'Cat'
  }
]
      

Я хочу этот результат:

newArr = [{ MainID: 1111,
           ParrentId: 1122
         },
         { MainID: 2222,
           ParrentId: 2233
         },
         { MainID: 3333,
           ParrentId: 3344
         }]

Как мне получить каждый массив внутри каждого объекта массива объектов и поместить его в новый массив объектов?

  • Крис

Ответы [ 3 ]

3 голосов
/ 27 января 2020

С reduce методом в одной строке.

const arr = [
  {
    Name: 'TestName',
    Age: 50,
    OtherStuff: [
      {
        MainID: 1111,
        ParrentId: 1122
      },
      {
        MainID: 2222,
        ParrentId: 2233
      }
    ],
    Animal: 'Dog'
  },
  {
    Name: 'TestName2',
    Age: 20,
    OtherStuff: [
      {
        MainID: 3333,
        ParrentId: 3344
      }
    ],
    Animal: 'Cat'
  }
];

const updated = arr.reduce((acc, curr) => [...acc, ...curr.OtherStuff], []);

console.log(updated);
2 голосов
/ 27 января 2020

Вот один из многих способов сделать это:

const arr = [{ el: [1, 2] }, { el: [3] }, { el: 4 }]

console.log(arr.flatMap(e => e.el))

См. array.flatMap ссылка для получения дополнительной информации, включая предупреждение о методах reduce и concat.

0 голосов
/ 27 января 2020

Когда вы хотите создать массив объектов из другого заданного массива объектов, вы используете функцию карты:

var newArr = arr.map(obj => {
  return obj.OtherStuff;
}).flat();

Вы объединяетесь с плоским методом, чтобы создать единый массив объектов вместо массива массивов. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...