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 相关文章推荐
jquery显示和隐藏div特效实例
Feb 27 Javascript
一个简单的瀑布流效果(主体形式自写)
May 27 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
jQuery实现类似标签风格的导航菜单效果代码
Aug 25 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
Aug 05 Javascript
JS作用域深度解析
Dec 29 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
Mar 21 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
Jul 14 Javascript
Javascript中的作用域及块级作用域
Dec 08 Javascript
vue+element的表格实现批量删除功能示例代码
Aug 17 Javascript
微信小程序自定义顶部组件customHeader的示例代码
Jun 03 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
PHP中is_file()函数使用指南
2015/05/08 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
javascript document.execCommand() 常用解析
2009/12/14 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
Python中的字符串替换操作示例
2016/06/27 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
python实发邮件实例详解
2019/11/11 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
毕业生求职推荐信
2013/11/04 职场文书
会计专业导师推荐信
2014/03/08 职场文书
主题团日活动总结
2014/06/25 职场文书
室内趣味活动方案
2014/08/24 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python