無法判斷我的瀏覽器控制檯是否被竊聽或發生了什麼,因爲我從來沒有遇到過使用反向函數的問題。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 - 切片然後反轉。我已經添加了一個例子。 –
嘿,非常感謝。拉姆錯誤在我的部分。只接受幾個答案! –