【问题标题】:New Copied Array Is Also Affecting Old Original Array - JS新复制的数组也会影响旧的原始数组 - JS
【发布时间】:2020-11-25 23:27:43
【问题描述】:
const array = [
{
  username: "name",
  password: "pass"
},
{
  username: "name",
  password: "pass"
},
{
  username: "name",
  password: "pass"
},
{
  username: "name",
  password: "pass"
},
];

const newArray = array.slice();

for(var i = 0; i < newArray.length; i++) {
  newArray[i].username = newArray[i].username + "!";
};

您好,我不知道为什么 .slice() 不适合我。当我通过 for 循环添加“!”到用户名并将新用户名保存到newArray,原始数组也有“!”添加到用户名。我在这里查找了另一个答案,代码运行良好,原始数组不受影响。我看不出这里出了什么问题...

【问题讨论】:

    标签: javascript arrays for-loop object copy


    【解决方案1】:

    这是因为对象是通过引用传递的。

    试试这个

    const newArray = array.map(({ username, password }) => {
      return {
        password,
        username: username + "!"
      }
    })
    

    【讨论】:

    • 谢谢!使用 map 来完成它实际上是问题的第 2 部分,对于第 1 部分,我应该使用 forEach 但无法弄清楚,所以我尝试了一个基本的 for 循环。我将检查通过引用传递对象的含义,看看这是否有助于我弄清楚第一部分。谢谢!
    猜你喜欢
    • 2019-09-10
    • 2020-08-09
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多