比較JavaScript 中複製數組的速度:Slice 與For 循環
在JavaScript 中,有兩種常見的創建副本的方法數組的:切片方法和for 迴圈。為了對各自的速度進行徹底分析,我們對各種複製方法進行了基準測試,並得出了一些令人驚訝的結果。
速度測量
在不同瀏覽器上進行的基準測試表明,複製數組的最快方法取決於所使用的瀏覽器引擎。對於像 Blink(Chrome、Edge)這樣的瀏覽器,slice 方法通常優於 for 循環,concat 稍微慢一些。
但是,對於 slice 和 concat 實作較不最佳化的瀏覽器,例如舊版的 Firefox和 Internet Explorer,while 循環方法成為明顯的贏家。
範例程式碼
以下範例腳本可用於在瀏覽器控制台中自行對方法進行基準測試:
// While loop method var n = 1000 * 1000; var start = +new Date(); var a = Array(n); var b = Array(n); var i = a.length; while (i--) b[i] = a[i]; console.log(new Date() - start); // Slice method var n = 1000 * 1000; var start = +new Date(); var a = Array(n); var b = a.slice(); console.log(new Date() - start);
注意事項
它是需要注意的是,雖然slice 或for循環方法會複製數組本身,但數組的內容是透過引用複製的,而不是深度複製克隆的。這意味著任一數組的變更都會反映在兩個數組中。
那麼,您應該選擇哪一種方法?對於大多數現代瀏覽器來說,切片方法是最好的選擇。但是,如果您的目標是 JavaScript 實作最佳化程度較低的舊版瀏覽器,則 for 迴圈方法可能會執行得更好。
以上是哪種 JavaScript 陣列複製方法(切片與 For 迴圈)最快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!