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的一种模块模式
Mar 22 Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
Seajs的学习笔记
Mar 04 Javascript
基于javascript实现图片左右切换效果
Jan 25 Javascript
javascript中对Date类型的常用操作小结
May 19 Javascript
JS Canvas定时器模拟动态加载动画
Sep 17 Javascript
深入理解JavaScript中的尾调用(Tail Call)
Feb 07 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
Vue使用v-viewer实现图片预览
Oct 21 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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
Java中final关键字详解
2015/08/10 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
费用申请报告范文
2015/05/15 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python