我有一个无法解决的情况。
// Trying to achieve this object with same order:
// {name: 'Person', income: 1000, 2019: 34, 2018: 12};
data.forEach(item => {
let obj = {
name: item.name
};
Object.keys(item.summary).forEach(key => {
obj['income'] = item.summary[key].income;
item.summary[key].YearlySummary.forEach(yearSumm => {
obj[yearSumm.year] = yearSumm.amount;
});
});
console.log(obj); // {2019: 34, 2018: 12, income: 1000, name: Person};
});
实际发生的是,当我向对象动态添加属性时,它会在后台进行排序。我不希望这样,需要保留将项目/属性添加到对象的顺序。
最佳答案
我认为属性和数组之间的组合不好。
我不了解您的数据结构。 item似乎只有一个item.summary。为什么循环遍历每个键以擦除obj的income属性?
我会做的:
data.forEach(item => {
let obj = {
name: item.name,
income: item.summary.income,
years = []
};
Object.keys(item.summary).forEach(key => {
item.summary[key].YearlySummary.forEach(yearSumm => {
obj.years.push({ year : yearSumm.year, amount: yearSumm.amount});
});
});
});