JavaScript array.reverse()如何在后台运行?

时间:2018-09-09 14:12:47

标签: javascript arrays reverse

如何使用.reverse()制作数组的反向副本?我无法解决这个问题。

这是我的功能:

function flipArray(inputArray){
let origArray = inputArray;
let flippedArray = origArray.reverse();

console.log(inputArray);
console.log(origArray);
console.log(flippedArray);
}

flipArray([1,2,3]);

我希望这...

[1, 2, 3]
[1, 2, 3]
[3, 2, 1]

或者这个...

[1, 2, 3]
[3, 2, 1]
[3, 2, 1]

但这就是我得到的...

[3, 2, 1]
[3, 2, 1]
[3, 2, 1]

为什么甚而inputArray也会反转?除了for循环之外,还有另一种方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

Array.prototype.reverse就地反转数组 。它修改原始数组并返回对其的引用。为了在反转之前创建原始数组的副本,可以使用Array.prototype.slice,例如:

function flipArray(inputArray){

    let origArray = inputArray.slice(0);
    let flippedArray = inputArray.slice(0).reverse();

    console.log(inputArray);
    console.log(origArray);
    console.log(flippedArray);
}

flipArray([1,2,3])现在产生

[1,2,3]
[1,2,3]
[3,2,1]