问题
数组里面有10万个数据,取第一个元素和第10万个元素的时间相差多少
答案
JavaScript 没有真正意义上的数组,所有的数组其实是对象,其“索引”看起来是数字,其实会被转换成字符串,作为属性名(对象的 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的数组,可以参考一下这篇文章讲述的比较清晰深究 JavaScript 数组