无法判断我的浏览器控制台是否被窃听或发生了什么,因为我从来没有遇到过使用反向函数的问题。str.reverse函数颠倒全局范围中的每个阵列
当我把下面进入我的铬控制台,
var a = ['one', 'two', 'three'];
var reversed = a.reverse();
console.log(a); // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']
无法判断我的浏览器控制台是否被窃听或发生了什么,因为我从来没有遇到过使用反向函数的问题。str.reverse函数颠倒全局范围中的每个阵列
当我把下面进入我的铬控制台,
var a = ['one', 'two', 'three'];
var reversed = a.reverse();
console.log(a); // ['one', 'two', 'three']
console.log(reversed); // ['three', 'two', 'one']
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']
反转函数改变当前数组。在您宣布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']
一个如何去设置一个变量反转的字符串,同时保持原来的,所以他们可以比较,并记录所需的输出作为评论? –
@BrodyMacfarlane - 切片然后反转。我已经添加了一个例子。 –
嘿,非常感谢。拉姆错误在我的部分。只接受几个答案! –