Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2019, 15:16
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

собрать массив из массива с объектами по условию((((
Коллеги, доброго времени суток, в общем из заголовка вопрос думаю ясен, на всходе есть массив объектов, вида:

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 => {
// и тут встал...
});
}

Последний раз редактировалось Роман Андреевич, 14.04.2019 в 15:21. Причина: дополнение
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2019, 15:19
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

Смотри тут - http://learn.javascript.ru/array-methods
http://learn.javascript.ru/array-methods#concat
Метод concat

Последний раз редактировалось Всемогущий, 14.04.2019 в 15:23.
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2019, 15:23
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

Всемогущий, насколько я понимаю concat просто объекдиняет несколько массивов в один???

Последний раз редактировалось Роман Андреевич, 14.04.2019 в 15:27.
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2019, 15:54
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

Решил! Спасибо. Concat не при чем
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2019, 15:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Роман Андреевич,
<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>
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2019, 16:01
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

рони, спасибо, у вас более, изящно это получилось))))
Ответить с цитированием
  #7 (permalink)  
Старый 14.04.2019, 16:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Роман Андреевич, а откуда эти данные и они всегда парные?
Ответить с цитированием
  #8 (permalink)  
Старый 15.04.2019, 07:20
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

laimas, данные берутся из базы, все это нужно для рендера на страницу, нет не всегда.
Ответить с цитированием
  #9 (permalink)  
Старый 15.04.2019, 07:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Роман Андреевич
данные берутся из базы
А данные из базы достаточно было отсортировать по полю code, что позволило бы вывести все одним простым циклом и мне так кажется, что даже без посредника, без преобразования в промежуточный объект. Как буквица выводится известно?
Ответить с цитированием
  #10 (permalink)  
Старый 15.04.2019, 07:41
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

laimas, было бы все просто, если бы не было так сложно))))
Там момент в том, что на старте у меня есть массив с объектами, котрые гораздо больше чем я написал. Когда массив приходит из базы я его разбиваю на нужные массивы, один для фильтра другой для таблицы и так далее. Тут типа особенность архитектуры приложения такая.
Мне из базы конечно проще было бы вытащить нужные данные, но в моем случае так не получится. Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция для инициализации массива с объектами R2R Общие вопросы Javascript 4 10.10.2018 20:47
Собрать массив из таблицы V2oD2o jQuery 4 25.04.2016 17:04
Массив из элементов другого массива, взятых в случайном порядке Basil_JS Общие вопросы Javascript 6 12.04.2015 13:07
преобразование массива с объектами в строку и обратно JustCrazy Элементы интерфейса 5 25.01.2015 18:15
как найти и удалить массив из массива? FRIE Общие вопросы Javascript 8 14.03.2011 15:48