1

这是我的训练:

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    document.getElementById("demo").innerHTML = fruits;
    
    function myFunction() {
        var fruits2 = fruits;
        fruits2.reverse();
        document.getElementById("demo").innerHTML = fruits+'<br>'+fruits2;
    }
<p>Click the button to reverse only last array (fruits2).</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

当我反转fruits2我的第一个变量(水果)时,也会改变,

我只是不想这样!我想一定很容易

4

2 回答 2

4

fruits2 = fruitssayfruits2现在是同一个对象 - 不是 的副本fruits,而是与 . 相同的对象fruits

这就像给你的朋友哈利一个昵称,比如疯狗。当你打疯狗时,哈利也会生气。他们不是两个独立的人,他们是一个有两种称呼他的人。

如果您想将它们分开,您需要克隆您的阵列。最容易复制数组的方法是使用slice

 var fruits2 = fruits.slice()
于 2016-11-07T02:27:35.407 回答
0

那是因为你的fruitsfruits2是同一个数组。当您反转一个时,第二个也会反转。

您需要制作阵列的另一个副本。一种简单的方法是

var fruits2 = JSON.parse(JSON.stringify(fruits));

或者

var fruits2 = fruits.slice()

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    document.getElementById("demo").innerHTML = fruits;
    
    function myFunction() {
        var fruits2 = fruits.slice()
        fruits2.reverse();
        document.getElementById("demo").innerHTML = fruits+'<br>'+fruits2;
    }
<p>Click the button to reverse only last array (fruits2).</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

于 2016-11-07T02:28:29.377 回答