Лучший способ справиться с конкатенацией массивов, размещенных внутри объекта - PullRequest
0 голосов
/ 24 марта 2020

Что ж, мне нужно сделать конкатенацию массива, помещенную в Object.

Итак, работающее решение, которое я сделал:

      const usersList = {
        tester: [{ id: 1, //... }, //...],
        custumers: [{ id: 1, //... }, //...],
        admin: [{ id: 1, //... }, //...]
      }

      let allUsers = []

      Object.keys(usersList).forEach(listKey => {
        allUsers = [
          ...allUsers,
          ...usersList[listKey]
        ]
      })

      return allUsers

Кроме того, мне интересно, возможно, Есть ли модный способ борьбы с таким случаем? Я попробовал этот, но он не работает:

[...Object.keys(usersList).map(listKey => usersList[listKey])]

Ответы [ 2 ]

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

Возьмите значения объекта, которые дадут вам массив массивов, затем сгладьте:

const allUsers = Object.values(usersList).flat();

Если вы не можете использовать .flat, тогда:

const allUsers = [].concat.apply(...Object.values(usersList));
0 голосов
/ 24 марта 2020

Другой способ - использовать flatMap

const usersList = {
  tester: [{ id: 1 }],
  custumers: [{ id: 1 }],
  admin: [{ id: 1 }]
};

const res = Object.values(usersList).flatMap(x => x);

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