【问题标题】:How does JavaScript array.reverse() works under the hood?JavaScript array.reverse() 如何在幕后工作?
【发布时间】:2018-10-04 06:04:53
【问题描述】:

如何使用.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 循环之外,还有其他方法吗?

【问题讨论】:

标签: javascript arrays reverse


【解决方案1】:

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 2016-08-05
    • 2019-04-28
    • 2014-11-18
    • 2011-02-17
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多