Группировка объектов

314
12 октября 2017, 13:28

Всем добра. есть массив объектов вида

var data1 = [ 
{ month:"Jan", category:"Final", value: "141" }, 
{ month:"Jan", category:"Raw Material", value: "3 513" }, 
{ month:"Jan", category:"Raw material class B", value: "1 551" }, 
{ month:"Jan", category:"Scrap", value: "116" }, 
{ month:"Jan", category:"Trading", value: "59" }, 
{ month:"Jan", category:" ", value: " " }, 
{ month:"Feb", category:"Final", value: "144" }, 
{ month:"Feb", category:"Raw Material", value: "3 631" }, 
{ month:"Feb", category:"Raw material class B", value: "1 591" }, 
{ month:"Feb", category:"Scrap", value: "116" }, 
{ month:"Feb", category:"Trading", value: "30" }, 
{ month:"Feb", category:" ", value: " " }, 
];

каким образом его можно привести к виду:

{ category:"Final", value: [141, 144, ...] }, 
{ category:"Raw Material", value: [3513,3631, ... ] }

Answer 1

var data1 = [ 
{ month:"Jan", category:"Final", value: "141" }, 
{ month:"Jan", category:"Raw Material", value: "3 513" }, 
{ month:"Jan", category:"Raw material class B", value: "1 551" }, 
{ month:"Jan", category:"Scrap", value: "116" }, 
{ month:"Jan", category:"Trading", value: "59" }, 
{ month:"Jan", category:" ", value: " " }, 
{ month:"Feb", category:"Final", value: "144" }, 
{ month:"Feb", category:"Raw Material", value: "3 631" }, 
{ month:"Feb", category:"Raw material class B", value: "1 591" }, 
{ month:"Feb", category:"Scrap", value: "116" }, 
{ month:"Feb", category:"Trading", value: "30" }, 
{ month:"Feb", category:" ", value: " " }, 
]; 
 
console.log(data1.reduce((result, {category, value}) => { 
  let target = result.find(row => row.category == category); 
  if(!target) { 
    target = {category, values: []}; 
    result.push(target); 
  }; 
  target.values.push(value); 
  return result; 
}, []));

READ ALSO
Как остановить выполнение AJAX

Как остановить выполнение AJAX

В общем дело такое Как остановить выполнение AJAX, и вернуться к заполнению форы если ответ от сервера не устараивае

260
vue js nested for

vue js nested for

Есть массив ключей : keyArr = ["key1", "key2", "key3", "key4", "key5"] Есть хэштаблица : myMap = {}

190
Как обратиться к элементу, который был добавлен после загрузки DOM?

Как обратиться к элементу, который был добавлен после загрузки DOM?

Допустим, у меня есть блочный элемент: <div class="answers" id="answers"></div> После загрузки, по нажатии на кнопку, я хочу вложить в него еще один:

267
Присвоить значение выше прокси

Присвоить значение выше прокси

В следующем коде прокси с get-перехватчиком в прототип (__proto__) объектаСоответственно, по схеме чтения свойств в js, до перехватчика очередь доходит...

218