Javascript学习笔记之数组的遍历和 length 属性
作者:hebedich 时间:2024-04-18 10:53:43
尽管数组在 Javascript 中是对象,但是不建议使用 for in 循环来遍历数组,实际上,有很多理由来阻止我们对数组使用 for in 循环。
因为 for in 循环将会枚举原型链上的所有属性,并且唯一阻止的方法是使用 hasOwnProperty 来判断,这将比普通的 for 循环要慢不少。
遍历
为了达到最佳性能来遍历一个数组,最好的方式就是使用经典的 for 循环。
var list = [1, 2, 3, 4, 5, ...... 100000000];
for(var i = 0, l = list.length; i < l; i++) {
console.log(list[i]);
}
这儿有一个额外的技巧,就是通过 l = list.length 来缓存数组的长度。
尽管属性 length 是定义在数组本身的,但是在循环的每一次遍历时仍然会有开销。尽管最新的 Javascript 引擎可能已经对这种情况作了性能上的优化,但是你并不能保证你的 Javascript 代码会一直在这种浏览器上运行。
实际上,不缓存长度的循环要比缓存长度的循环性能上慢不少。
length 属性
尽管 length 属性仅仅通过 getter 方法返回数组中元素的个数,但是可以通过 setter 方法来截断数组。
var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]
foo.length = 6;
foo.push(4);
foo; // [1, 2, 3, undefined, undefined, undefined, 4]
给 length 属性赋值一个更小的数将会截断数组,如果赋值一个更大的数则不会截断数组。
总结
为了性能达到最优,建议使用 for 循环而不是使用 for in 循环,同时缓存 length 属性。
还有数组对象是没有任何方法的,只有一个唯一的属性length。字符串对象是有length方法的~~
标签:Javascript,数组,遍历,length
0
投稿
猜你喜欢
Python 异步等待任务集合
2022-08-14 17:23:22
Python连接数据库并批量插入包含日期记录的操作
2024-01-12 21:07:03
Python 将 QQ 好友头像生成祝福语的实现代码
2022-01-11 20:29:33
Golang断言判断值类型的实现方法
2024-02-16 09:59:38
ASP运行环境iis和pws的搭建
2007-09-22 18:44:00
ORACLE查询删除重复记录三种方法
2024-01-19 11:03:10
python热力图实现简单方法
2023-10-28 06:14:41
js图片随机显示技巧
2007-08-19 20:20:00
在ASP.NET 2.0中操作数据之五十四:添加新记录时包含一个文件上传选项
2024-03-16 02:11:24
用正则替换所有URL
2009-03-13 13:51:00
python中多个装饰器的执行顺序详解
2022-04-30 13:43:51
Innodb中mysql快速删除2T的大表方法示例
2024-01-22 09:14:21
asp中access升级到sql server后要做的工作
2007-08-11 13:35:00
Python 文件处理注意事项总结
2022-05-20 23:05:17
php+ajax无刷新上传图片实例代码
2023-11-17 11:27:58
Oracle 外连接实现代码
2009-08-08 23:08:00
Pycharm挂代理后依旧插件下载慢的完美解决方法
2023-06-17 23:07:31
ASP使用缓存方法及缓存类详解
2008-02-15 08:36:00
在RedHat系Linux上部署Python的Celery框架的教程
2023-07-30 15:49:37
自动完成JS类(纯JS, Ajax模式)
2024-05-11 09:41:59