如何複製 Array

一般很直覺,如要把A變數等同於B變數的內容。

var B = 'Hello';
var A = B;

B = 'Hi';
console.log(A, B);

很清楚的知道,得到的答案為 Hello Hi,但如果今天複製的是 Array 的話呢?

var B = ['Hello', 'Hi'];
var A = B;

B[0] = 'What!?';
console.log(A, B);

照常理來說答案應該是 ["What!?", "Hi"] ['Hello', 'Hi'] 才對,但丟到瀏覽器去執行的結果竟然為 ["What!?", "Hi"] ["What!?", "Hi"]

因為 JS Array是參數傳址方式,所以可以用 C = B.slice(); 去解決這樣的問題。

另外一項測試當 console.log( A === B ); 可以得到 true,但 C 已經是另外一個值了,所以當 console.log( C === B ); 的時候,會得到 false。

參考資料

results matching ""

    No results matching ""