Возврат идентификаторов из объекта в массивах

#javascript #arrays #loops #foreach

Вопрос:

У меня есть многомерный массив объектов javascript, который я пытаюсь использовать, чтобы просто сопоставить идентификатор объекта в новый массив, как показано ниже.

Каково лучшее решение для возврата идентификатора во внутреннем значении, поэтому я просто получаю массив идентификаторов, что бы я ни пытался, кажется, не работает

 [
  {
    units: [
      {
        id: 10000282,
        name: "Group 1",
      },
      {
        id: 10000340,
        name: "Group 2",
      },
      {
        id: 10000341,
        name: "Group 3",
      },
    ],
  },
  {
    units: [
      {
        id: 10000334,
        name: "Group 4",
      },
    ],
  },
]
 

Ожидаемый результат — просто верните массив с простыми идентификаторами
, например
ids = [ 10000282, 10000340, 10000341, 10000334 ]

Комментарии:

1. вы можете попробовать Array.prototype.reduce

Ответ №1:

Предполагая, что данные находятся в переменной data :

 > data.map(o => o.units.map(u => u.id)).flat()
[ 10000282, 10000340, 10000341, 10000334 ]
 

Это предполагает, что вы находитесь в среде, где .flat() есть вещь.

Если это не так, то более длинный обходной путь-это

 const ids = [];
data.forEach(o => {
   o.units.forEach(u => {
     ids.push(u.id);
   });
});