我有一个无法解决的情况。

// 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});
        });
    });
});

10-05 20:51
查看更多