#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);
});
});