首页 > 解决方案 > 将对象数组转换为新对象

问题描述

以下代码工作正常,给出了所需的输出,但我想知道是否有更简洁的方法来实现最终结果。具体来说,是否有一种方法可以消除声明const consolidated = {};?也许Object.assign()有潜力……?

const forecast = [
    { productId: 111, bucket: '2021-05-01', quantity: 3500 },
    { productId: 111, bucket: '2021-06-01', quantity: 3600 },
    { productId: 111, bucket: '2021-07-01', quantity: 4100 },
    { productId: 111, bucket: '2021-08-01', quantity: 4000 },
    { productId: 111, bucket: '2021-09-01', quantity: 3800 }
];

const consolidated = {};

forecast.forEach(o => {
    consolidated[o.bucket] = o.quantity
});

console.log('consolidated', consolidated);

输出:
在此处输入图像描述

标签: javascript

解决方案


您可以通过以下步骤一步完成Object.fromEntries

const consolidated = Object.fromEntries(
  forecast.map(o => [o.bucket, o.quantity])
);

但这Object.fromEntries是一种有点新的方法——过时的浏览器不理解它,所以请确保包含一个 polyfill(如果这是一个专业项目,你可能应该已经这样做了)。


推荐阅读