当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Javascript:关于hasOwnProperty和IndexOf的性能对比

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

2018年09月20日  | 移动技术网IT编程  | 我要评论

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)。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网