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

如何高效修改JS对象指定key的value并乘2,是否需要拷贝原对象?

JS对象指定属性批量修改方案

要不要拷贝原对象?

  • 不需要保留原对象原始值:直接修改原对象即可,无额外性能开销
  • 需要保留原对象不变:先做浅拷贝再修改,避免污染原对象影响其他业务逻辑

实现代码

1. 直接修改原对象(无保留原数据需求)

仅修改2个key的极简写法:

ob.a *= 2
ob.b *= 2

8个key的批量高效写法,无需重复写多行赋值代码:

// 把需要修改的key统一放到数组中批量遍历处理
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'].forEach(key => {
  // 加判断是为了避免误改继承属性,确定key都是对象自身属性可去掉判断更简洁
  if (ob.hasOwnProperty(key)) ob[key] *= 2
})

2. 不修改原对象(需保留原始数据)

先浅拷贝原对象,再修改拷贝后的新对象即可,一级属性用扩展运算符做浅拷贝性能极高:

const newOb = {...ob}
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'].forEach(key => {
  if (newOb.hasOwnProperty(key)) newOb[key] *= 2
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:00:03