你知道js循环哪个更快嘛?

882 阅读1分钟

先列出js循环的方法
1.for循环
2.for in
3.for of
4.map
5.forEach
6.filter
7.reduce
8.some
9.every
10.while循环

实验环境

node 14.16.0版本。

实验数据

let arr = new Array(20000000).fill(1)

2000万长度,元素均为1的数组。

for循环

for (let i = 0; i < arr.length; i++) { }

image.png

for in

for (let i in arr) { }

image.png

for of

for (let i of arr) { }

image.png

map

arr.map((i) => { })

image.png

forEach

arr.forEach((i) => { })

image.png

filter

arr.filter((i) => { })

image.png

reduce

arr.reduce((pre, cur) => { },)

image.png

some

arr.some((i) => { })

image.png

every

arr.every((i) => { })

image.png

while循环

let i = 0;
while (i < arr.length) {
    i++
}

image.png

总结

每个方法都经过几十次实验,循环时间都差不多,防止偶然误差。

结论
1.原生循环最快,也就是for循环和while循环。for循环又快于while循环。
2.for in最慢,因为它是遍历对象的,所以不要用它来遍历数组哦。
3.至于循环api中,every最快,map最慢。map最慢是因为要返回一个长度相同的新数组。


以上是笔者自己实验得到的结果,如有不同的想法,欢迎指正!


记录记录!