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

如何将数组转换为键值相同的对象数组?输出示例如下

将普通数组转换为键值相同的对象数组的实现方案

Got it!要把普通数组转成每个对象的键和值完全相同的对象数组,这里有几种实用的JavaScript实现方案,附上示例供你参考:

方法一:使用Array.map()(推荐)

这是最简洁直观的方案,利用数组的map方法遍历每个元素,返回一个包含目标对象的新数组。核心是用计算属性名[item]来确保对象的键名等于当前元素的值。

代码示例

// 普通数组
const originalArray = ['name', 'age', 'email', 2024];
// 转换为对象数组
const objectArray = originalArray.map(item => ({ [item]: item }));

console.log(objectArray);

输出结果

[
  { name: 'name' },
  { age: 'age' },
  { email: 'email' },
  { '2024': 2024 }
]

方法二:使用for循环(兼容旧环境)

如果你的项目需要兼容ES5之前的旧环境,手动用for循环构建数组是稳妥的选择,逻辑和map一致,只是写法更基础。

代码示例

const originalArray = ['name', 'age', 'email'];
const objectArray = [];

for (let i = 0; i < originalArray.length; i++) {
  const currentItem = originalArray[i];
  objectArray.push({ [currentItem]: currentItem });
}

console.log(objectArray);

输出结果

[
  { name: 'name' },
  { age: 'age' },
  { email: 'email' }
]

方法三:使用Array.reduce()

虽然不如map直观,但reduce也能实现这个需求,适合在需要同时做其他数组处理的场景下使用。

代码示例

const originalArray = ['name', 'age', 'email'];
const objectArray = originalArray.reduce((resultArray, item) => {
  resultArray.push({ [item]: item });
  return resultArray;
}, []); // 初始值为空数组

console.log(objectArray);

输出结果

和上面两种方法完全一致。


注意事项

  • 如果原数组包含重复元素,转换后的对象数组也会生成重复的对象;
  • 若元素是null、undefined这类特殊值,计算属性名会自动转为对应的字符串(比如null会变成'null'作为键名);
  • 对于对象类型的元素,键名会是该对象的字符串形式(比如[object Object]),这类场景建议提前处理原数组元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:47:29