JavaScript中清空数组的三种方式


Posted in Javascript onMarch 22, 2017

方式1,splice

var ary = [1,2,3,4]; 
ary.splice(0,ary.length); 
console.log(ary); // 输出 [],空数组,即被清空了

方式2,length赋值为0

这种方式很有意思,其它语言如Java,其数组的length是只读的,不能被赋值。如

int[] ary = {1,2,3,4}; 
ary.length = 0;

Java中会报错,编译通不过。

而JS中则可以,且将数组清空了,如

var ary = [1,2,3,4]; 
ary.length = 0; 
console.log(ary); // 输出 [],空数组,即被清空了

目前 Prototype中数组的 clear 方法和mootools库中数组的 empty 方法使用这种方式清空数组。

方式3,赋值为[]

var ary = [1,2,3,4]; 
ary = []; // 赋值为一个空数组以达到清空原数组

Ext库Ext.CompositeElementLite类的 clear 方法使用这种方式清空。

方式2 保留了数组其它属性,方式3 则未保留。

很多人认为方式2的效率很高些,因为仅仅是给length重新赋值了,而方式3则重新建立个对象。经 测试 恰恰是方式3的效率高。测试代码:

var a = []; 
for (var i=0; i< 1000000; i++){ 
 a.push(i); 
} 
var start = new Date(); 
//a = []; 
a.length = 0; 
var end = new Date(); 
alert(end - start);

测试结果:

  IE6 IE7 IE8 IE9 Firefox Safari Chrome
a.length=0 94 29 14 1 4 3 1
a=[] 0 0 0 0 0 0 0

以上结果可看到:方式3更快,效率更高。

从测试结果上看如果不保留原数组的其它属性Ext采用的方式更值得推荐。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript Event学习第七章 事件属性
Feb 07 Javascript
javascript中interval与setTimeOut的区别示例介绍
Mar 14 Javascript
javascript 3d 逐侦产品展示(核心精简)
Mar 26 Javascript
jQuery的$.proxy()应用示例介绍
Apr 03 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
Oct 21 Javascript
基于vue-cli3创建libs库的实现方法
Dec 04 Javascript
javascript实现多张图片左右无缝滚动效果
Mar 22 #Javascript
tab栏切换原理
Mar 22 #Javascript
js中的DOM模拟购物车功能
Mar 22 #Javascript
js+canvas实现动态吃豆人效果
Mar 22 #Javascript
JavaScript实现星星等级评价功能
Mar 22 #Javascript
discuz表情的JS提取方法分析
Mar 22 #Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 #Javascript
You might like
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
python函数形参用法实例分析
2015/08/04 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
python中线程和进程有何区别
2020/06/17 Python
常用的10个Python实用小技巧
2020/08/10 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
市场部专员岗位职责
2013/11/30 职场文书
学术会议欢迎词
2014/01/09 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
Python中request的基本使用解决乱码问题
2022/04/12 Python