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

修改JavaScript数组所有对象属性避免eslint no-param-reassign报错的方法

方案1:生成新数组(无副作用,推荐)

如果你不需要保留原数组的原有内容,优先用这种方式,返回新对象避免修改入参,完全符合eslint规则:

const newArr = arr.map(element => ({
  ...element,
  name: 'common'
}))

这里用对象扩展运算符拷贝原对象的所有属性,再覆盖name属性,全程没有修改element入参的任何属性,不会触发no-param-reassign报错。


方案2:直接修改原数组

如果你确实需要修改原数组而非生成新数组,可以通过遍历索引直接访问原数组元素修改,避开对入参的属性赋值:

arr.forEach((_, index) => {
  arr[index].name = 'common'
})

这里我们不使用遍历拿到的元素参数做属性赋值,而是通过索引直接操作原数组的对应元素,同样不会触发eslint报错。


规则说明

你之前的写法触发报错是因为no-param-reassign规则默认禁止修改函数入参的属性,本质是为了避免无意义的副作用导致逻辑隐患,上面两种方案都从规则要求的层面规避了入参属性修改的操作,不需要加忽略注释即可通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:06:02