欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Javascript:关于hasOwnProperty和IndexOf的性能对比

程序员文章站 2023-11-27 16:39:04
javascript:关于hasownproperty和indexof的性能对比 今天做了一个小测试(测试环境node),测试了js的hasownproperty和indexof的性能对比。先来看一...

javascript:关于hasownproperty和indexof的性能对比

今天做了一个小测试(测试环境node),测试了js的hasownproperty和indexof的性能对比。先来看一下简单的测试demo

let arr = [];
for(let i = 1;i <= 1000000;i++) {
  arr[i] = i;
}

console.time("indexof");
arr.indexof(1000000)
console.timeend("indexof");

console.time('hasownproperty')
arr.hasownproperty(1000000)
console.timeend('hasownproperty')

给一个数组赋值了1000k个数,获取最后一个数的下标,查看消耗的时间

打印结果:

indexof: 1.252ms
hasownproperty: 0.008ms

indexof的时间不是很稳定,有时候会飙到2ms多(这大概和机器的执行环境有关),但是对比起来,和hasownproperty就相差很大了,hasownproperty直接是微秒级别。

到底为什么会有这么大的差异。emmm,首先看一下indexof和hasproperty的原理。

indexof做的事情就是遍历整个数组,找到需要访问的数的位置,然后返回它的下标,这种情况下时间复杂度可以达到o(n)。

而hasownproperty就不同了,数组可以看作是一个键值对,键是数组的下标,值是对应下标的值,这样的话就很容易做hash,时间复杂度可以达到n(1)。