标签:
何为数组:
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
在JS中除了Object类型以为,我们用的最多的应该就是数组了。而且JS数组和其他大多数语言中的数组有着很大的区别。在Java语言中,我们声明了一个数组,那么这个数组只能保存相同类型的值,集合数组也是一样;而在我们的JS数组中的每一项都可以保存任何数据,也就是说我们的JS数组第一个位置可以用来保存字符串,第二个位置可以用来保存数值,第三个位置可以用来保存对象。并且JS的数组是动态调整的,有点类似于Java的集合数组(List);会随着数据的增加而扩大数组的容量;
1、数组的创建
var array = new Array(); //创建一个数组 <span style="white-space:pre"> </span>var array = new Array([2]); //创建一个数组并指定长度,注意不是上限,是长度 var array = new Array([1,'字符串',new Object()]); //创建一个数组并赋值,对应的是数字,字符串,对象 alert(array);2.检测数组
array instanceof Array; //返回结果为布尔值 Array.isArray(array); //返回结果为布尔值,只支持IE9,谷歌,火狐能3.数组的转换
var person1={ toLocaleString :function(){ return "Nikolaos"; }, toString:function(){ return "NiCholas"; } }; var person2= { toLocaleString :function(){ return "Grigorios"; }, toString:function(){ return "Greg"; } }; var people=[person1,person2]; alert(people); alert(people.toString()); alert(people.toLocaleString());数组转换成字符串可以使用toStirng,valueOf,toLocaleString,Join;
4操作方法
4.1数组的元素的访问
1 |
var testGetArrValue=arrayObj[1]; //获取数组的元素值 |
2 |
3 |
arrayObj[1]= "这是新值" ; //给数组元素赋予新的值 |
4.2数组元素的添加
1 |
arrayObj.
push([item1 [item2 [. . . [itemN ]]]]); //
将一个或多个新元素添加到数组结尾,并返回数组新长度 |
2 |
3 |
arrayObj.unshift([item1
[item2 [. . . [itemN ]]]]); //
将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 |
4 |
5 |
arrayObj.splice(insertPos,0,[item1[,
item2[, . . . [,itemN]]]]); //将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。 |
4.3数组元素的删除
1 |
arrayObj.pop(); //移除最后一个元素并返回该元素值 |
2 |
3 |
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移 |
4 |
5 |
arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素 |
4.4数组的截取和合并
1 |
arrayObj.slice(start,
[end]); //以数组的形式返回数组的一部分,注意不包括
end 对应的元素,如果省略 end 将复制 start 之后的所有元素 |
2 |
3 |
arrayObj.concat([item1[,
item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组 |
5.栈方法
JS数组也提供了一种让数组的行为类似于其他数据结构的方法,数组表现的就像栈一样。栈是一种可以限制插入和删除项,后进先出的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(推入)和移除(弹出)。只发生在栈顶。JS为数组专门提供了push()和pop()方法,以便实现类似栈的行为;
var names=["张三","李四"]; names.push("王五"); //添加另一项 names[3]="赵六" //添加一项 alert(names.length); //4 var item=names.pop(); //去的最后一项 alert(item);
栈数据结构的访问规则是后进先出,而队列的数据结构的访问规则是先进先出。队列在列表的末端添加项,从列表的前端移除项。
var names=["张三","李四"]; names.push("王五"); //添加另一项 names[3]="赵六" //添加一项 alert(names.length); //4 var item=names.shift(); //取得第一项 alert(item);7.重排序方法
var values=[4,2,5,7,1]; alert(values.sort()); //sort正序 alert(values.reverse()); //reverse倒序8.位置方法
位置方法splice()方法,这个方法是最强大的数组方法了,它有很多种用法。splice()的主要用途是向数组的中部插入项,但使用这种方法的方式有三种;
删除:可以删除任意数量的项,只需指定2个参数:要删除的起始位置和要删除的项数,例如
splice(0,2)会删除数组中的前两项
插入:可以向指定位置插入任意数量的项,只需提供3个参数,起始位置0(要删除的项数)和要插入的项,如果要插入多个项,可以再传入第四,第五,以致任意多个项,例如splice(2,0,"张三三","李四四")会从当前数组的位置2开始插入
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置,要删除的项数和要插入的任意数量的项,插入的项数不必与删除的项数相等。例如splice(2,1,"张三三","李四四")会删除当前数组位置2的项,然后再从位置2开始插入字符串;
后面还有更深入的迭代和缩小方法,留着下次讨论;
标签:
原文地址:http://blog.csdn.net/liaodehong/article/details/50365872