javascript对数组的常用操作代码 数组方法总汇


Posted in Javascript onJanuary 27, 2011

1. shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
var a = [1,2,3,4,5];
var b = a.shift(); //a:[2,3,4,5] b:1
2. unshift:将参数添加到原数组开头,并返回数组的长度
var a = [1,2,3,4,5];
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7
注:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。
3. pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
var a = [1,2,3,4,5];
var b = a.pop(); //a:[1,2,3,4] b:5
4. push:将参数添加到原数组末尾,并返回数组的长度
var a = [1,2,3,4,5];
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7
5. concat:返回一个新数组,是将参数添加到原数组中构成的
var a = [1,2,3,4,5];
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
6. splice(start,deleteCount,val1,val2,...):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,...
var a = [1,2,3,4,5];
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]
var b = a.splice(0,1); //同shift
a.splice(0,0,-2,-1); var b = a.length; //同unshift
var b = a.splice(a.length-1,1); //同pop
a.splice(a.length,0,6,7); var b = a.length; //同push
7. reverse:将数组反序
var a = [1,2,3,4,5];
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]
8. sort(orderfunction):按指定的参数对数组进行排序
var a = [1,2,3,4,5];
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]
9. slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组
var a = [1,2,3,4,5];
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
10. join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push)、删除(shift)里面元素,我们还可以通过for循环遍历里面的元素,那么除了数组我们在JavaScript里还可以有别的集合吗?

由于JavaScript的语言特性,我们可以向通用对象动态添加和删除属性。所以Object也可以看成是JS的一种特殊的集合。下面比较一下Array和Object的特性:

Array:
新建:var ary = new Array(); 或 var ary = [];
增加:ary.push(value);
删除:delete ary[n];
遍历:for ( var i=0 ; i < ary.length ; ++i ) ary[i];

Object:
新建:var obj = new Object(); 或 var obj = {};
增加:obj[key] = value; (key为string)
删除:delete obj[key];
遍历:for ( var key in obj ) obj[key];

从上面的比较可以看出Object完全可以作为一个集合来使用,在使用Popup窗口创建无限级Web页菜单(3)中我介绍过Eric实现的那个__MenuCache__,它也就是一个模拟的集合对象。

如果我们要在Array中检索出一个指定的值,我们需要遍历整个数组:
代码:

var keyword = ; 
for ( var i=0 ; i < ary.length ; ++i ) 

{ 

if ( ary[i] == keyword ) 

{ 

// todo 

} 

}

而我们在Object中检索一个指定的key的条目,只需要是要使用:
代码:

var key = ''; 
var value = obj[key]; 

// todo

 Object的这个特性可以用来高效的检索Unique的字符串集合,遍历Array的时间复杂度是O(n),而遍历Object的时间复杂度是O(1)。虽然对于10000次集合的for检索代价也就几十ms,可是如果是1000*1000次检索或更多,使用Object的优势一下就体现出来了。在此之前我做了一个mapping,把100个Unique的字符mapping到1000个字符串数组上,耗时25-30s!后来把for遍历改成了Object模拟的集合的成员引用,同样的数据量mapping,耗时仅1.7-2s!!!

对于集合的遍历效率(从高到低):var value = obj[key]; > for ( ; ; ) > for ( in )。效率最差的就是for( in )了,如果集合过大,尽量不要使用for ( in )遍历。

Javascript 相关文章推荐
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 Javascript
nodeType属性返回被选节点的节点类型介绍
Nov 22 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
微信小程序中添加客服按钮contact-button功能
Apr 27 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 Javascript
JavaScript 注册事件代码
Jan 27 #Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 #Javascript
EXT窗口Window及对话框MessageBox
Jan 27 #Javascript
基于jquery的表头固定的若干方法
Jan 27 #Javascript
jquery animate图片模向滑动示例代码
Jan 26 #Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 #Javascript
jquery lazyload延迟加载技术的实现原理分析
Jan 24 #Javascript
You might like
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
js实现简单的验证码
2015/12/25 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
js中url对象化管理分析
2017/12/29 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
详解python:time模块用法
2019/03/25 Python
python用requests实现http请求代码实例
2019/10/31 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
一年级评语大全
2014/04/23 职场文书
青年标兵事迹材料
2014/08/16 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
高中教师个人工作总结
2015/02/10 职场文书
放假通知范文
2015/04/14 职场文书
PHP基本语法
2021/03/31 PHP
Python中Selenium对Cookie的操作方法
2021/07/09 Python