为什么arr.reverse()会反转原始数组

时间:2017-06-03 16:02:05

标签: javascript jquery

我正在寻找的是能够反转数组并将其存储到新数组而无需修改原始数组。我使用的语法如下:

var arr= ["1", "2", "5"]
var arrTwo = arr.reverse();
console.log(arrTwo) \\ ["5" , "2" , "1"]
console.log(arr) \\["5" , "2" , "1"]

当我输出值时,我将两个值都反转。任何人都可以帮我识别我的语法有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您的语法没有问题,但reverse()就是这样做的。 如果您想要一个副本,请在以下之前克隆该数组:

var arr= ["1", "2", "5"]
var arrTwo = arr.slice(0).reverse();

答案 1 :(得分:0)

正如您所发现的,reverse修改了源数组。您可以先复制数组,然后使用slice()...(点差运算符)将其反转。

'use strict';
var arr = ["1", "2", "5"];
var arrTwo = [...arr].reverse();
console.log(arrTwo); // ["5", "2", "1"]
console.log(arr); // ["1", "2", "5"]