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 相关文章推荐
JS 日期验证正则附asp日期格式化函数
Sep 11 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
Mar 23 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
Javascript的无new构建实例详解
May 15 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
ES6 let和const定义变量与常量的应用实例分析
Jun 27 Javascript
vue实现计步器功能
Nov 01 Javascript
在Vue中使用Select选择器拼接label的操作
Oct 22 Javascript
前端JS获取URL参数的4种方法总结
Apr 05 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 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
详解js类型判断
2018/05/22 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python中max函数用法实例分析
2015/07/17 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python3的socket使用方法详解
2020/02/18 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
单位实习鉴定评语
2015/01/04 职场文书
离婚起诉书范本
2015/05/18 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
如何利用Python实现一个论文降重工具
2021/07/09 Python
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL