Нужно получить значения определенного ключа из массива объектов и собрать их в новом массиве JS
Требуется помощь =) Не могу разобраться. Получаю массив объектов после POST запроса (ниже пример) :
{
"items": [{
"encodedId": "1:0JPQqdGM0JNWCdCzf2Jt0LHQotGV0ZUh0ZbRlBXCt0Je0JHQruKAnDcUXkZQ0YvQscKnehLRnNC1KtGK0Ll9BWLigLo/HXXCrhw=",
"influence": 700.0,
"similarCount": 3
}, {
"encodedId": "1:fmYoHEjQrRbQhz3RiUtm4oCh0JLRmtCLIyU10IzigqzRgGjQmCoR0JFg0YRhwrVzN9CxDUM50KcpdTbRiNCLwpjRkuKAphXRkVxh0JU50K5uWdC50L7RjX0C0KwQRsKp",
"influence": 607.0,
"similarCount": 8
}],
"mappings": [{
"inn": "7710137066",
"entityIds": [534868]
}]
}
После чего нужно сделать из этого объект с массивом(ниже пример), где я получаю значения каждого ключа encodedId и кладу их в массив ids :
{
"ids": [ "1:0JPQqdGM0JNWCdCzf2Jt0LHQotGV0ZUh0ZbRlBXCt0Je0JHQruKAnDcUXkZQ0YvQscKnehLRnNC1KtGK0Ll9BWLigLo/HXXCrhw=",
"1:fmYoHEjQrRbQhz3RiUtm4oCh0JLRmtCLIyU10IzigqzRgGjQmCoR0JFg0YRhwrVzN9CxDUM50KcpdTbRiNCLwpjRkuKAphXRkVxh0JU50K5uWdC50L7RjX0C0KwQRsKp",
]
}
Создал функцию, чтобы это дело преобразовать, но где-то такой затык, не пойму где. Если поможете готовым ответом будет круто, я буду от него уже смотреть как вы сделали логику.
мой вариант :
const objOfIds = objectSearch.reduce(
(acc, { encodedId }) => {
return {
ids: [...acc.encodedId, encodedId],
};
},
{ ids: [] }
);
console.log(objOfIds);
Ответы (3 шт):
const data = {
"items": [{
"encodedId": "1:0JPQqdGM0JNWCdCzf2Jt0LHQotGV0ZUh0ZbRlBXCt0Je0JHQruKAnDcUXkZQ0YvQscKnehLRnNC1KtGK0Ll9BWLigLo/HXXCrhw=",
"influence": 700.0,
"similarCount": 3
}, {
"encodedId": "1:fmYoHEjQrRbQhz3RiUtm4oCh0JLRmtCLIyU10IzigqzRgGjQmCoR0JFg0YRhwrVzN9CxDUM50KcpdTbRiNCLwpjRkuKAphXRkVxh0JU50K5uWdC50L7RjX0C0KwQRsKp",
"influence": 607.0,
"similarCount": 8
}],
"mappings": [{
"inn": "7710137066",
"entityIds": [534868]
}]
};
const data1 = data.items.reduce((acc, {encodedId}) => {
acc['ids'].push(encodedId);
return acc;
}, {ids:[]});
console.log(data1)
У вас 2 банальные ошибки:
Вам нужен не сам объект
objectSearch, а его ключitems, т.е.objectSearch.itemsВнутри
reduceвам нужен массивids, а неencodedId, потому что в начальном значенииaccу вас{ids:[]}, а не{encodedId:[]}const data = { "items": [{ "encodedId": "1:0JPQqdGM0JNWCdCzf2Jt0LHQotGV0ZUh0ZbRlBXCt0Je0JHQruKAnDcUXkZQ0YvQscKnehLRnNC1KtGK0Ll9BWLigLo/HXXCrhw=", "influence": 700.0, "similarCount": 3 }, { "encodedId": "1:fmYoHEjQrRbQhz3RiUtm4oCh0JLRmtCLIyU10IzigqzRgGjQmCoR0JFg0YRhwrVzN9CxDUM50KcpdTbRiNCLwpjRkuKAphXRkVxh0JU50K5uWdC50L7RjX0C0KwQRsKp", "influence": 607.0, "similarCount": 8 }], "mappings": [{ "inn": "7710137066", "entityIds": [534868] }] }; const objOfIds = data.items.reduce((acc, { encodedId }) => { return { ids: [...acc.ids, encodedId], }; }, { ids: [] }); console.log(objOfIds);
Чутка краткий вариант:
const data = {
"items": [{
"encodedId": "1:0JPQqdGM0JNWCdCzf2Jt0LHQotGV0ZUh0ZbRlBXCt0Je0JHQruKAnDcUXkZQ0YvQscKnehLRnNC1KtGK0Ll9BWLigLo/HXXCrhw=",
"influence": 700.0,
"similarCount": 3
}, {
"encodedId": "1:fmYoHEjQrRbQhz3RiUtm4oCh0JLRmtCLIyU10IzigqzRgGjQmCoR0JFg0YRhwrVzN9CxDUM50KcpdTbRiNCLwpjRkuKAphXRkVxh0JU50K5uWdC50L7RjX0C0KwQRsKp",
"influence": 607.0,
"similarCount": 8
}],
"mappings": [{
"inn": "7710137066",
"entityIds": [534868]
}]
};
const objOfIds = data.items.reduce((acc, { encodedId }) => ({
ids: [...acc.ids, encodedId]
}), {
ids: []
});
console.log(objOfIds);
Предлагаю воспользоваться другим методом массива. Поскольку тут все явно прослеживается... Вместо объекта будет значение его свойства.
const data = {
"items": [{
"encodedId": "1:0JPQqdGM0JNWCdCzf2Jt0LHQotGV0ZUh0ZbRlBXCt0Je0JHQruKAnDcUXkZQ0YvQscKnehLRnNC1KtGK0Ll9BWLigLo/HXXCrhw=",
"influence": 700.0,
"similarCount": 3
}, {
"encodedId": "1:fmYoHEjQrRbQhz3RiUtm4oCh0JLRmtCLIyU10IzigqzRgGjQmCoR0JFg0YRhwrVzN9CxDUM50KcpdTbRiNCLwpjRkuKAphXRkVxh0JU50K5uWdC50L7RjX0C0KwQRsKp",
"influence": 607.0,
"similarCount": 8
}],
"mappings": [{
"inn": "7710137066",
"entityIds": [534868]
}]
};
const objOfIds = { ids: data.items.map(o => o.encodedId) }
console.log(objOfIds)