You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将对象数组(Array of Objects)转换为对象的对象(Object of Objects)?

将对象数组转换为以索引为键的对象

输入数组

[{id:1, name: 'Hana', age: 30}, {id:2, name: 'Sana', age: 20}, {id:3, name: 'Kana', age: 30}]

目标格式

{0:{id:1, name: 'Hana', age: 30}, 1:{id:2, name: 'Sana', age: 20}, 2:{id:3, name: 'Kana', age: 30}}

实现方法

方法1:使用Object.fromEntries(ES2019及以上)

这是最简洁的实现方式,通过map将数组元素与索引组成键值对数组,再用Object.fromEntries转换为对象:

const arr = [{id:1, name: 'Hana', age: 30}, {id:2, name: 'Sana', age: 20}, {id:3, name: 'Kana', age: 30}];
const result = Object.fromEntries(arr.map((item, index) => [index, item]));
console.log(result);

方法2:使用Array.reduce

通过累加器逐步构建目标对象,兼容性比Object.fromEntries稍好:

const arr = [{id:1, name: 'Hana', age: 30}, {id:2, name: 'Sana', age: 20}, {id:3, name: 'Kana', age: 30}];
const result = arr.reduce((acc, item, index) => {
  acc[index] = item;
  return acc;
}, {});
console.log(result);

方法3:普通for循环

适合需要兼容低版本JS环境的场景:

const arr = [{id:1, name: 'Hana', age: 30}, {id:2, name: 'Sana', age: 20}, {id:3, name: 'Kana', age: 30}];
const result = {};
for (let i = 0; i < arr.length; i++) {
  result[i] = arr[i];
}
console.log(result);

以上三种方法都能得到你需要的目标对象,可根据项目的JS环境选择合适的方案。

内容的提问来源于stack exchange,提问作者emma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:15:33