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

如何为数组中的JavaScript对象添加键值对?哪种方式性能更优?

更优方案与性能对比

先明确你的场景:
现有数组:

documents = [{ doc1: 'abc', doc2: 'def' }]

待合并的对象:

documen = {opq: 'rst', uvw: 'xyz' }

更优实现方式

如果想把documen里的键值对批量加到数组第一个对象里,不用逐个写属性名的话,用Object.assign是更简洁的方案:

// 直接把documen的所有键值对合并到原对象
Object.assign(documents[0], documen)

执行后documents[0]会变成 { doc1: 'abc', doc2: 'def', opq: 'rst', uvw: 'xyz' }。要是你需要把opq改成doc3、uvw改成doc4这种自定义键名,也可以这么写:

Object.assign(documents[0], {
  doc3: documen.opq,
  doc4: documen.uvw
})

这种写法和点标记的思路一致——直接修改原对象,但代码更紧凑,添加多个属性时更省心。

两种方案的性能差异

  • 选项1(点标记赋值):性能最优。它就是直接给对象新增属性,没有任何额外的对象复制、遍历操作,是最底层的属性赋值逻辑,几乎没有开销。
  • 选项2(扩展语法):性能不如选项1。扩展语法会先创建一个新对象,把原documents[0]的所有属性都拷贝一遍,再把新属性加进去,最后替换掉数组里的原对象。这个拷贝过程会产生额外开销,原对象属性越多,性能差距越明显。

总结:如果允许直接修改原对象,选项1或者Object.assign是最优选择;如果必须保留原对象不变(不能修改它),那只能用扩展语法或者Object.assign创建新对象(比如documents[0] = Object.assign({}, documents[0], { doc3: documen.opq }))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:58:01