javascript - 将对象数组转换为新对象
问题描述
以下代码工作正常,给出了所需的输出,但我想知道是否有更简洁的方法来实现最终结果。具体来说,是否有一种方法可以消除声明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);
解决方案
您可以通过以下步骤一步完成Object.fromEntries
:
const consolidated = Object.fromEntries(
forecast.map(o => [o.bucket, o.quantity])
);
但这Object.fromEntries
是一种有点新的方法——过时的浏览器不理解它,所以请确保包含一个 polyfill(如果这是一个专业项目,你可能应该已经这样做了)。
推荐阅读
- python - 不在任何地方使用网格仍然会在 tkinter 中出现错误“不能在 .frame2 内使用几何管理器包,该包已经有网格管理的从属”
- linux - Linux中的虚拟内存和虚拟地址
- css - CSS层次结构问题
- c++ - 在线程执行期间更新变量和杀死线程
- powershell - 将 PowerShell 快捷方式复制到 Program Files,repath -file 参数魔术
- android - Tensorflow.lite 模型在 Android 应用程序中产生错误(不同)结果?
- javascript - 在 JavaScript 中向 Date 对象添加天数无法正常工作
- python - 通过 Pyspark (Python) 上的内部连接和过滤条件连接两个数据帧
- python - Python:为什么下次我使用 \t 而不是空格字符时,单词会转到下一次?
- xcode - 确定是否正在使用 Xcode StoreKit 配置文件