所以我有以下数据结构
var data = [
{name:'AWB ', data:[12,13 ...]},
{name:'CTS', data:[40,53 ...]}
]
我有另一个映射名称的数组
var nameditems = [
{name:'AWB', json_col:'awb_no'},
{name:'CTS', json_col:'cts'}
]
从上面的示例来看,每个数组对象中的每个数据都有两个或更多项
我想将数据转换成这样
[
{awb_no:12, cts:40},
{awb_no:13, cts:53},
]
还有更多列,但为了简洁起见,我只包含前两列。此外,数据名称是动态的,但named_items json_col具有 key 对中的实际名称
所以我用 es6 尝试了以下操作
let resultarray = [];
const totalitems = data[0].data.length;
for (int i = 0; i < data[0].data.length; i++)
data.forEach(item => {
let jsoncolname = nameditems.find(col => col.name === item.name);
console.log(jsoncolname, json_col) //how do i add as key below
resultarray.push({}) //here am stuck
})
最佳答案
假设 data
数组在 data
数组内的所有项目上具有相同的长度。您可以通过映射通过 name
data
将 nameditems
减少到另一个数组
var data = [{
name: 'AWB',
data: [12, 13, 14]
},
{
name: 'CTS',
data: [40, 53, 67]
}
]
var nameditems = [{
name: 'AWB',
json_col: 'awb_no'
},
{
name: 'CTS',
json_col: 'cts'
}
]
console.log(
nameditems.reduce(
(items, {
name,
json_col: prop
}) => data.find(item => item.name === name).data.map((value, index) => {
const obj = items[index] || {} // pick existing item or create new
obj[prop] = value // populate the prop
return obj
}),
[]
)
)
关于javascript - 使用 ES6 将 javascript 中的对象数据数组转换为另一种形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935028/