собрать массив из массива с объектами по условию((((
Коллеги, доброго времени суток, в общем из заголовка вопрос думаю ясен, на всходе есть массив объектов, вида:
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, время: 02:43. |