首页 > 解决方案 > 使用eslint错误更新javascript数组中所有对象的对象值

问题描述

我有一个这样的javascript数组:

const arr=[{name:"Test", sex:"Male"},{name:"Test2",sex:"Female"}, 
{name:"Test3",sex:"Male"}
 ]

我想将 arr 中所有对象的名称更改为“common”,如下所示:

const arr=[
{name:"common",
 sex:"Male"},
{name:"common",
 sex:"Female"},
{name:"common",
 sex:"Male"}]

我正在做的是:

arr.map((element) => {
      element.name= "common";
      return element;
    });

使用forEach

arr.forEach((element) => {
      element.name= "common";
      return element;
    });

这是有效的,但会发出 eslint 警告,说明:

no-param-reassign error
Assignment to property of function parameter 'element'.

如何在不为此添加跳过的情况下解决此问题?也许通过使用 forEach 或其他方式?任何线索都将受到高度赞赏。

标签: javascriptarraysobjecteslint

解决方案


您不应该更改函数中的传入参数以防止意外行为。 https://eslint.org/docs/rules/no-param-reassign

您可以更改关闭此规则,也可以将参数重新分配给另一个变量:

 arr = arr.map((element) => {
     let e = element;
     e.name = 'common';
     return e;
 });

推荐阅读