【问题标题】:New array overwriting global array新数组覆盖全局数组
【发布时间】:2014-11-13 06:36:44
【问题描述】:

我有一个像这样的全局数组:

var myArray = [];

其中包含各种元素。我需要创建一个具有相同内容的新数组,然后像这样反转它:

newArray = myArray;
newArray = newArray.reverse();

但是,当我这样做时,它会反转 myArray 和 newArray。

我做错了什么?

谢谢!

【问题讨论】:

  • 取决于数组中的内容。如果是简单的原始值,比如数字,那么.slice 足以克隆一个数组。如果数组中有对象,则必须制作数组的深拷贝,slice 只会制作浅拷贝。如果这是您需要的,请使用.slice 方法。

标签: javascript


【解决方案1】:

这是因为您的两个数组都引用了同一个对象。要摆脱它,你必须用 slice 克隆它..

var myArray = [1,2];
var newArray = myArray.slice(0)
newArray.reverse();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 2020-09-06
    • 2017-04-02
    相关资源
    最近更新 更多