我有一个这样的对象:
let inputData = {
"dimensions": [
{
"id": "dimension_re",
"label": "Region",
"values": ["East", "East", "West", "SouthWest", "South","NorthEast"]
},
{
"id": "dimension_cnt",
"label": "County",
"values": ["London", "Italy", "Germany", "US", "Russia","India"]
},
{
"id": "measure_sales",
"label": "Sales",
"values": [100, 156, 432, 462, 25,100]
},
{
"id": "measure_qty",
"label": "Quantity",
"values": [85, 34, 153, 434, 52, 43]
},
{
"id": "measure_profit",
"label": "Profit",
"values": [123, 45, 421, 465, 451, 56]
}
]
}
我的预期输出:
let expectdData = [
{
"Region": "East",
"County": "London",
"Sales": 100,
"Quantity": 85,
"Profit": 123
},
{
"Region": "East",
"County": "Italy",
"Sales": 156,
"Quantity": 34,
"Profit": 45
},
{
"Region": "West",
"County": "Germany",
"Sales": 432,
"Quantity": 153,
"Profit": 421
},
{
"Region": "SouthWest",
"County": "US",
"Sales": 462,
"Quantity": 434,
"Profit": 465
},
{
"Region": "South",
"County": "Russia",
"Sales": 25,
"Quantity": 52,
"Profit": 451
},
{
"Region": "NorthEast",
"County": "India",
"Sales": 100,
"Quantity": 43,
"Profit": 56
}
]
这是我获取此预期数据的程序:
let actualData = [];
inputData.dimensions.forEach((e,i) => {
let tempVal = e.label;
e.values.forEach((elem,index) => {
actualData[index] = new Object({
[tempVal] : elem
});
})
});
console.log(actualData);
但不幸的是,我只得到每个对象的最后一项。在我的控制台中,它看起来像这样:
[
{ Profit: 123 },
{ Profit: 45 },
{ Profit: 421 },
{ Profit: 465 },
{ Profit: 451 },
{ Profit: 56 }
]
我认为,在每次迭代中,它都会覆盖“tempVal”变量。如何防止这种情况以及如何实现预期的对象数组?
您在每次迭代时替换整个对象,如果它不存在,您只需要创建它,否则您可以替换密钥。
let actualData = [];
inputData.dimensions.forEach((e,i)=>{
let tempVal = e.label;
e.values.forEach((elem,index) => {
if (!actualData[index]) {
actualData[index] = {}
}
actualData[index][tempVal] = elem
})
});
console.log(actualData);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句