我正在尝试将数组与值合并;
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} ],
...
]
答案 0 :(得分:1)
我将使用以下方式:
values.map((val, i ) => {
let obj={};
for(let i=0;i<header.length;i++){
obj[header[i]]=val[i];
}
return obj;
})
答案 1 :(得分:1)
使用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);
答案 2 :(得分:0)
我将像您所做的一样动态地解决它,但是将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)