2017-06-03 55 views
1

我在寻找的是能够颠倒数组并将其存储到新数组而无需修改原数组。我使用的语法如下:为什么arr.reverse()颠倒原始数组

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

当我输出的值我得到两个值颠倒。任何人都可以帮助我确定我的语法有什么问题吗?

+0

'VAR arrTwo = arr.slice()反();' –

+0

没有什么不对您的语法。 'Array#reverse'完全符合你所说的。您需要先复制数组,然后才能完成所需的操作。 – CollinD

+0

你的语法没有问题。请阅读[documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse):_“reverse”方法转置调用数组的元素对象**就绪,对数组**进行变异,并返回对数组的引用。“_ – Xufox

回答

1

你的语法没有错,但reverse()在原地做事。 如果你想有一个拷贝,克隆前阵:

var arr= ["1", "2", "5"] 
var arrTwo = arr.slice(0).reverse(); 
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"]