最近做项目的重构,突然想到一直在用数组的各种遍历方法,却没有测试过它们的速度,想到就做,于是就有了今天的文章,本文不涉及技术问题,只是记录下遍历数组各种方法的用时对比,代码如下:
let arr = []; for(let i = 0;i<10000000;i++){ arr.push(Math.random()*1000); };复制代码
首先我用for循环创建了一个长度1000000的随机数数组,接下来分别测试了各种遍历方法的用时
console.log(Date.now()) for(let i = 0;i<arr.length;i++){ arr[i]++; } console.log(Date.now())复制代码
普通for循环方法平均用时86.2毫秒
console.log(Date.now()) for(let i = 0,len = arr.length;i<len;i++){ arr[i]++; } console.log(Date.now())复制代码
普通for循环优化版方法平均用时10.4毫秒
console.log(Date.now()) arr.forEach((item,index) => { item++; }) console.log(Date.now())复制代码
forEach方法平均用时147.2毫秒
console.log(Date.now()) arr.map((item,index) => { item++; }) console.log(Date.now())复制代码
map方法平均用时191.4毫秒
console.log(Date.now()) for(let i in arr){ arr[i]++; } console.log(Date.now())复制代码
for in方法平均用时3322.2毫秒
console.log(Date.now()) for(let item of arr){ item++; } console.log(Date.now())复制代码
for of方法平均用时158.8毫秒
需注意的是本文所记录每种方法的用时因机器性能不同结果也会变化,本文意义在于各种遍历数组方法的速度对比
如果有错误或者不严谨的地方,请给予指正,十分感谢!