JavaScript array.reverse() 是如何工作的?
How does JavaScript array.reverse() works under the hood?
如何使用 .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
循环之外,还有其他方法吗?
Array.prototype.reverse
反转数组就地。它修改原始数组和 returns 对它的引用。为了在反转之前创建原始数组的副本,您可以使用 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]
如何使用 .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
循环之外,还有其他方法吗?
Array.prototype.reverse
反转数组就地。它修改原始数组和 returns 对它的引用。为了在反转之前创建原始数组的副本,您可以使用 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]