我正在尝试添加一个公共(public)对象数组,应该类似于 fund_asset_class_focus 和年份,并且必须格式化为如下所示的数组数组(["fund_asset..","2017-total allocation",2018,2019]
).
data = [
{
"allocation": 60.30,
"dt": "2017",
"fund_asset_class_focus": "U.S. Fixed Income"
},
{
"allocation": 50,
"dt": "2017",
"fund_asset_class_focus": "U.S. Fixed Income"
}
{
"allocation": 39.80,
"dt": "2018",
"fund_asset_class_focus": "U.S. Fixed Income"
},
{
"allocation": 40.7,
"dt": "2019",
"fund_asset_class_focus": "U.S. Fixed Income"
},
{
"allocation": 20,
"dt": "2018",
"fund_asset_class_focus": "Cash"
},
{
"allocation": 9.7,
"dt": "2018",
"fund_asset_class_focus": "Cash"
}
{
"allocation": 16,
"dt": "2018",
"fund_asset_class_focus": "Credit"
},
{
"allocation": 16,
"dt": "2019",
"fund_asset_class_focus": "Credit"
},
{
"allocation": 16,
"dt": "2019",
"fund_asset_class_focus": "Credit"
}
]
data = [["U.S. Fixed Income",110.30,39.80, 40.7],["Cash",0,29.7,0],["Credit",0,16,32]]
我尝试使用下面的代码来解决这个问题,但是,它未能满足我的要求:
for (let i in data) {
var tempObj = {};
if (obj[years[0]])
tempObj[years[0]] = obj[years[0]];
else
tempObj[years[0]] = {};
if (obj[data[i]["fund_asset_class_focus"]]) {
}
}
最佳答案
创建一个名为 years
的映射对象,它将每年作为键,并将年份在输出数组中的位置作为它的值。在这里,我假设你只有 3 年。你也可以让它变得动态。然后使用reduce
。创建一个累加器对象,每个 fund_asset_class_focus
作为键,输出中需要的嵌套数组作为值。
const data=[{allocation:60.3,dt:"2017",fund_asset_class_focus:"U.S. Fixed Income"},{allocation:50,dt:"2017",fund_asset_class_focus:"U.S. Fixed Income"},{allocation:39.8,dt:"2018",fund_asset_class_focus:"U.S. Fixed Income"},{allocation:40.7,dt:"2019",fund_asset_class_focus:"U.S. Fixed Income"},{allocation:20,dt:"2018",fund_asset_class_focus:"Cash"},{allocation:9.7,dt:"2018",fund_asset_class_focus:"Cash"},{allocation:16,dt:"2018",fund_asset_class_focus:"Credit"},{allocation:16,dt:"2019",fund_asset_class_focus:"Credit"},{allocation:16,dt:"2019",fund_asset_class_focus:"Credit"}];
const years = { 2017: 1, 2018: 2, 2019: 3 },
defaultValues = Object.keys(years).map(_ => 0);
const merged = data.reduce((r, o) => {
const { allocation, dt, fund_asset_class_focus: fund } = o;
r[fund] = r[fund] || [fund, ...defaultValues];
r[fund][years[dt]] += allocation;
return r;
}, {})
const output = Object.values(merged);
console.log(JSON.stringify(output))
关于javascript - 向数组添加通用对象和格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036110/