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

如何使用JavaScript的reduce()方法将数组元素填充到对象对应键?

问题核心

你的代码没跑出预期结果,问题出在赋值的键不对:reduce回调里直接拿数组的数字索引当对象键写值,最后只会给对象挂上"0"、"1"、"2"三个新属性,根本没碰你提前定义好的first、second、third三个键,这三个键没被重新赋值,自然一直是null。

修正代码

你只要先把预定义对象的键按顺序取出来,让数组索引和对象键一一对应上赋值就行。优先推荐不修改原对象的写法,避免意料之外的副作用:

const myObj = {
  first: null,
  second: null,
  third: null
}

const myArr = [ "abc", "def", "ghi"]
// 按定义顺序拿到对象的键列表:['first', 'second', 'third']
const objKeys = Object.keys(myObj)

const newObj = myArr.reduce((result, value, index) => {
  // 用对应位置的预定义键赋值,不要直接用数组的数字索引
  result[objKeys[index]] = value
  return result
// 初始值传原对象的浅拷贝,不会改动最开始定义的myObj
}, {...myObj})

console.log(newObj)
// 输出:{ first: "abc", second: "def", third: "ghi" }

如果你确定后续不会再用到原始的myObj,也可以直接把myObj作为reduce的初始值传入,省去浅拷贝的步骤,但这种写法会直接修改原对象,日常开发中如果不确定原对象的用途,不建议这么写。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:27:23