【问题标题】:Javascript - Modify an array duplicate without modifying the original array [duplicate]Javascript - 在不修改原始数组的情况下修改数组副本[重复]
【发布时间】:2014-12-18 18:50:43
【问题描述】:

我确定这是一件愚蠢的事情,但我无法解决它。

如果我这样做:

var arr = [1, 2, 3, "up"];
var duplicate = arr;
duplicate[3] = "down";
console.log(arr[3]); //"down"
console.log(duplicate[3]); //"down"

那么为什么原来的数组也被修改了呢?和它们指向同一个数组有关吗?

如何只修改重复的?

【问题讨论】:

  • 好吧,它看起来是我的重复,它不是重复的,但我的问题是重复的!抱歉,如果你不是英语母语,有时甚至很难找到用英语表达问题的方式,所以即使我寻找也没有找到类似的问题。

标签: javascript


【解决方案1】:

你需要克隆你的duplicate数组...你可以使用slice()方法来做:

var arr = [1, 2, 3, "up"];
var duplicate = arr.slice(0);
duplicate[3] = "down";
console.log(arr[3]); //"up"
console.log(duplicate[3]); //"down"

【讨论】:

    【解决方案2】:

    原来的数组被修改了,因为使用var duplicate = arr仅仅意味着duplicate的值现在等于arr的值。更改其中任何一个都会更改数组的值。

    关于复制数组及其内容,这篇文章有完整的写了How do I correctly clone a JavaScript object?

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 2021-12-28
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 2021-06-09
      相关资源
      最近更新 更多