cocos JS 几种循环遍历对象的比较
2021-07-02 06:06
标签:属性 ++ 选择器 firefox com htm object key body 通常我们会用循环的方式来遍历数组。但是循环是 导致js 性能问题的原因之一。一般我们会采用下几种方式来进行数组的遍历: 方式1: for in 循环: var arr = [1,2,3,4,5]; var obj = { a : 1, b : 2, c : 3 }; for( var item in arr|obj ){ fn(item){ //do sth wtih obj[item]; } 这里的 item: 方式2: for 循环: for (var i=0; i //do sth with arr[i]; } 这两种方法应该非常常见且使用很频繁。但实际上,这两种方法都存在性能问题。 在方式一中,for-in 需要分析出array 的每个属性,这个操作性能开销很大。用在 key 已知的数组上是非常不划算的。所以尽量不要用 for-in,除非你不清楚要处理哪些属性,例如 JSON 对象这样的情况。 在方式2中,循环每进行一次,就要检查一下数组长度。读取属性(数组长度)要比读局部变量慢,尤其是当 array 里存放的都是 DOM 元素,因为每次读取都会扫描一遍页面上的选择器相关元素,速度会大大降低。 所以这时候我们就有必要对方式2进行优化。 加速的 : var arr = [1,2,3,4,5]; var length =arr.length; for(var i=0; i fn(arr[i]); } 现在只需要读取一次 array 的 length 属性,速度已经加快了。但是还能不能更快呢? 事实是,如果循环终止条件不进行比较运算,那么循环的速度还可以更快。 加速且优雅的: var arr = [1,2,3,4,5]; var i = arr.length; while(i--){ fn(arr[i]); } 方式 3: forEach: var arr = [1,2,3,4,5]; arr.forEach( fn(value,index){ //Do sth with value ; } ) 注意: 关于跳出循环的几种方式: cocos JS 几种循环遍历对象的比较 标签:属性 ++ 选择器 firefox com htm object key body 原文地址:http://www.cnblogs.com/luorende/p/6998032.html
// do sth with arr[item];
};
上一篇:NGINX之——配置HTTPS加密反向代理訪问–自签CA
下一篇:js日常分享