Сделать массив на основе данных другого массива
Добрый день, как можно из массива 1 получить массив 2?
Массив 1: [{ val1: 0, val2: 0, val3: 0, year: "2018" },{ val1: 1, val2: 1, val3: 1, year: "2019" }] Массив 2: [{ "Name": "val1", "2018": 0, "2019": 1 },{ "Name": "val2", "2018": 0, "2019": 1 },{ "Name": "val3", "2018": 0, "2019": 1 }] |
{ const array1 = [{ val1: 0, val2: 0, val3: 0, year: "2018" }, { val1: 1, val2: 1, val3: 1, year: "2019" }]; const array2 = array1.reduce((m, v)=>{ const { map, result } = m; const { year } = v; for(const key of Object.keys(v)) { if(key === "year") continue; if(key in map === false) result.push(map[key] = { Name: key }); map[key][year] = v[key]; } return m; }, { map: {}, result: [] }).result; console.log(array2); } |
Спасибо большое, то что нужно :)
|
PetrIII,
let data = [{ val1: 0, val2: 0, val3: 0, year: "2018" }, { val1: 1, val2: 1, val3: 1, year: "2019" }]; let arr = data.reduce((obj, elem) => { let {year, ...el} = elem; for (let key in el) { let ob = obj[key]; if (!ob) { ob = obj[key] = {Name: key}; obj.arr.push(ob) }; ob[year] = el[key]; }; return obj; }, {arr: []}).arr console.log(arr) |
Цитата:
|
Часовой пояс GMT +3, время: 01:34. |