問題
數(shù)組里面有10萬個數(shù)據(jù),取第一個元素和第10萬個元素的時間相差多少
答案
JavaScript 沒有真正意義上的數(shù)組随闽,所有的數(shù)組其實是對象父丰,其“索引”看起來是數(shù)字,其實會被轉換成字符串掘宪,作為屬性名(對象的 key)來使用蛾扇。所以無論是取第 1 個還是取第 10 萬個元素,都是用 key 精確查找哈希表的過程魏滚,其消耗時間大致相同镀首。
為了更加清楚一點還是使用js來一段代碼比較清晰
var arr = new Array(100000).fill(null)
console.time('first')
arr[0]
console.timeEnd('first')
console.time('end')
arr[99999]
console.timeEnd('end')
/*
first: 0.00390625ms
end: 0.0029296875ms
*/
上面測試代碼打印結果時間基本可以忽略不計
如果覺得還不夠,找了一個測試jsperf鼠次。
測試結果:https://jsperf.com/getelemperformance/1
想要更加仔細研究下javascript的數(shù)組更哄,可以參考一下這篇文章講述的比較清晰深究 JavaScript 數(shù)組