str.reverse函数反转全局范围内的每个数组

时间:2017-09-07 04:34:18

标签: javascript arrays string google-chrome reverse

无法判断我的浏览器控制台是否存在错误或正在发生什么,因为我从未遇到过使用反向功能的问题。

当我将以下内容扔进我的Chrome控制台时,

var a = ['one', 'two', 'three'];
var reversed = a.reverse(); 

console.log(a);        // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']

我明白了 enter image description here

2 个答案:

答案 0 :(得分:0)

Array#reverse有效,无法创建新数组。这条线

var reversed = a.reverse(); 

撤消a并设置reversed以引用相同的数组。

在此示例中,您可以看到向reversed添加项目也会影响a,因为它们引用相同的数组:



var a = ['one', 'two', 'three'];
var reversed = a.reverse(); 

reversed.push(1000); // add something to reversed

console.log(a);        // ['three', 'two', 'one', 1000]
console.log(reversed); // ['three', 'two', 'one', 1000]




要创建新数组,请在原始数组上使用Array#slice,然后反转数组:



var a = ['one', 'two', 'three'];
var reversed = a.slice().reverse(); 

console.log(a);        // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']




答案 1 :(得分:0)

反向函数改变当前数组。在您将reversed声明为a.reverse()后,阵列a也会发生变异。因此,您将['three', 'two', 'one']console.log(a)

打印出console.log(reversed)

你想要做的是克隆一个:

var a = ['one', 'two', 'three']; var reversed = a.slice().reverse();

console.log(a); // ['one', 'two', 'three'] console.log(reversed); // ['three', 'two', 'one']