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

JavaScript如何合并多个对象去除索引键,生成指定结构的目标对象

问题疏漏

  • Object.assign传入数组作为源参数时,会将数组的数字索引作为键,对应索引的元素作为值合并到目标对象,这是输出出现0、1、2键的核心原因。
  • 你代码中fields: Object.assign({}, builtFields)不是合法的变量赋值写法,且你已经声明fields为存储字段名的数组,同名变量赋值会产生冲突。

修复实现

方案1:调整Object.assign传参

将存储多个小对象的数组展开,把每个小对象作为独立参数传入Object.assign即可:

const fieldKeys = [
  'name',
  'age',
  'address'
];
const builtFields = []
for (let i = 0; i < fieldKeys.length; i++) {
  builtFields.push(
    {
      [fieldKeys[i]]: { type: '' }
    }
  )
}
// 展开数组作为参数
const fields = Object.assign({}, ...builtFields)
console.log(fields)

方案2:直接构建目标对象(更推荐)

无需先存数组再合并,直接初始化空对象循环赋值,性能更高代码更简洁:

const fieldKeys = [
  'name',
  'age',
  'address'
];
const fields = {}
fieldKeys.forEach(key => {
  fields[key] = { type: '' }
})
console.log(fields)

两种实现的输出均符合预期:

{
  name: { type: '' },
  age: { type: '' },
  address: { type: '' }
}

内容的提问来源于stack exchange,提问作者x-ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:18:03