JS 数组和对象的遍历方式,以及几种方式的比较

通常我们会用循环的方式来遍历数组。但是循环是 导致js 性能问题的原因之一。一般我们会采用下几种方式来进行数组的遍历

for in循环

for循环

forEach

这里的 forEach回调中两个参数分别为 value,index
forEach 无法遍历对象

let xmObj = {
    
     name: 'xiaoming', sex: '男', aeg: 23 };

// 将 Generator 函数加到对象的Symbol.iterator属性上面
xmObj[Symbol.iterator] = objGenerator;

IE不支持该方法;Firefox 和 chrome 支持
forEach 无法使用 break,continue 跳出循环,且使用 return 是跳过本次循环
这两种方法应该非常常见且使用很频繁。但实际上,这两种方法都存在性能问题

在方式一中,for-in需要分析出array的每个属性,这个操作性能开销很大。用在 key 已知的数组上是非常不划算的。所以尽量不要用for-in,除非你不清楚要处理哪些属性,例如 JSON对象这样的情况

在方式2中,循环每进行一次,就要检查一下数组长度。读取属性(数组长度)要比读局部变量慢,尤其是当 array 里存放的都是 DOM 元素,因为每次读取都会扫描一遍页面上的选择器相关元素,速度会大大降低

猜你喜欢

转载自blog.csdn.net/weixin_44064067/article/details/108481493