собрать массив из массива с объектами по условию((((
Коллеги, доброго времени суток, в общем из заголовка вопрос думаю ясен, на всходе есть массив объектов, вида:
let arr = [
{code: "003002", util: "для продажи в сети"},
{code: "003000", util: "для продажи на улице"},
{code: "003002", util: "спец предложения"},
{code: "003000", util: "Для мелкой розницы"},
{code: "003001", util: "для продажи в розничные магазины поселков"}
];
Из данного массива мне нужно собрать новый массив вида:
let arr = [
{
code: "003002",
utils: ["для продажи в сети","спец предложения" ]
},
{
code: "003000",
utils: ["для продажи на улице","Для мелкой розницы" ]
},
{
code: "003001",
utils: ["для продажи в розничные магазины поселков" ]
}
];
т.е. объединить значения util в одну категорию. Как то так наверное. Прошу помощи у знатоков, так как сам уже напрочь запутался Заранее благодарю ps пока что изначально выбираю уникальные code :
let code = {};
arr.forEach(item => {
let c = item.code;
cat[c] = true;
});
Потом видимо:
let result =[];
for (let key in code) {
arr.foreach(item => {
// и тут встал...
});
}
|
Смотри тут - http://learn.javascript.ru/array-methods
http://learn.javascript.ru/array-methods#concat Метод concat |
Всемогущий, насколько я понимаю concat просто объекдиняет несколько массивов в один???
|
Решил! Спасибо. Concat не при чем
|
Роман Андреевич,
<script>
let arr = [
{code: "003002", util: "для продажи в сети"},
{code: "003000", util: "для продажи на улице"},
{code: "003002", util: "спец предложения"},
{code: "003000", util: "Для мелкой розницы"},
{code: "003001", util: "для продажи в розничные магазины поселков"}
];
let ar = arr.slice(0).sort((a,b) => a.code - b.code).reduce((ar, v) => {
let a = ar[ar.length - 1];
if(!a || v.code != a.code) {
a = {code : v.code, utils :[]}
ar.push(a)
}
a.utils.push(v.util)
return ar
},[] )
document.write(JSON.stringify(ar, "", 4))
</script>
|
рони, спасибо, у вас более, изящно это получилось))))
|
Роман Андреевич, а откуда эти данные и они всегда парные?
|
laimas, данные берутся из базы, все это нужно для рендера на страницу, нет не всегда.
|
Цитата:
|
laimas, было бы все просто, если бы не было так сложно))))
Там момент в том, что на старте у меня есть массив с объектами, котрые гораздо больше чем я написал. Когда массив приходит из базы я его разбиваю на нужные массивы, один для фильтра другой для таблицы и так далее. Тут типа особенность архитектуры приложения такая. Мне из базы конечно проще было бы вытащить нужные данные, но в моем случае так не получится. Спасибо |
| Часовой пояс GMT +3, время: 22:03. |