Объединить массивы в массив объектов, используя карту - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь объединить массивы со значениями;

const headers = ["DATE", "FGH", "DCP", "MRK"];
const values = [["2019-06-12", 106, 125, 122 ], ["2019-06-14", 108, 128, 121]];

в массив объектов для получения окончательного результата:

[
  { DATE: "2019-06-12”, FGH: 106, DCP: 125, MRK: 122 },
  { DATE: "2019-06-14”, FGH: 108, DCP: 128, MRK: 121 }
]

с использованием метода .map;

this.mergedValues = this.values.map((val, i ) => 
  headers.map((headerVal, j) => ({
    [headerVal]: val[j]
  })))

но отображение заголовков неверно, потому что оно помещает каждый элемент в объект;

[ { DATE: "2019-06-12”}, {FGH: 106}, {DCP: 125}, {MRK: 122} ],
  ...
]

Ответы [ 3 ]

1 голос
/ 25 марта 2019

Я буду использовать следующим образом:

values.map((val, i ) => {
  let obj={};
  for(let i=0;i<header.length;i++){
        obj[header[i]]=val[i];
  }
  return obj;
})
1 голос
/ 25 марта 2019

Используйте Array#reduce метод для создания элемента объекта.

let mergedValues = values.map((val) => headers.reduce((obj, key, index) => Object.assign(obj, { [key]: val[index] }), {}));

const headers = ["DATE", "FGH", "DCP", "MRK"];
const values = [
  ["2019-06-12", 106, 125, 122],
  ["2019-06-14", 108, 128, 121]
];


let mergedValues = values.map((val) => headers.reduce((obj, key, j) => Object.assign(obj, {
  [key]: val[j]
}), {}));

console.log(mergedValues);
0 голосов
/ 25 марта 2019

Я бы решил это динамически, аналогично тому, что вы сделали, но используя reduce в качестве последнего термина.С reduce вы можете создать один конечный объект после преобразования каждого элемента каждого массива значений.

const headers = ["DATE", "FGH", "DCP", "MRK"];
const values = [["2019-06-12", 106, 125, 122 ], ["2019-06-14", 108, 128, 121]];

const result = values.map(value => 
  value.reduce((acc, data, index) => 
    ({...acc, [headers[index]]: data}), {}));

console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...