JavaScript Array(数组)

一、简介

1、JavaScript数组的元素可以是任何类型的。

2、JavaScript数组可以是稀疏的,这是数组的长度和索引值不一致。

3、JavaScript数组是一个特别的对象。索引就是这个数组对象的属性,只不过恰巧数组的属性是一系列整数字符串而已。

二、数组创建

1、var x=12;var arr=[x,x+1,x+2];//数组的元素不一定要是常量,也可以为表达式。每次引用数组,都会对表达式求值。

2、var y=[1,,2,,,];//数组不是每个元素要是指定,没指定的值为undefined,并且忽略最后一个逗号,所以这个数组有5个元素,而不是六个,分别为:1,undefind,2,undefined,undefined

3、var arr=new Array();//通过Array构造函数创建

  arr=new Array(10);//如果构造参数为单个数值,参数表示的是创建的数组的长度

  arr=new Array("10");arr=new Array(1,2);//如果构造函数的参数为单个非数值或者参数个数大于一个,参数表示的是数组的元素。

三、数组的长度length

1、数组的长度,不一定等于数组的元素个数。如:var a=[];a[10]=0;//数组a长度为11,当时元素个数为1

2、数组永远满足不等式length>数组索引的最大值。为了保持这个不等式,JavaScript在操作数组的时候自动做两件事:

a.给数组添加元素的时候,length自动增长。

b.设置数组长度的时候,如果新的长度小于数组已有元素数目,数组多余的元素会被删除。

四、数组元素的增加和删除

1、增加:var a=[];

方式一:a[0]=1;a[1]=2;

方式二:a.push(3);a.push({x:1,y:2});a.push("one","two");

2、删除:var a=[1,2,3];

方式一:使用delete删除:delete a[1];//元素2被删除了,1 in a返回false,但是删除不影响数组的长度,所以a.length还是等于3

方式二:使用数组函数,如:pop(),slice(),shift()等等也可以达到删除的目的,把数组的length设小,也可以删除元素。

五、数组函数

1、join()/reverse()/sort()/concat()/slice()/splice()/push()/pop()/shift()/unshift()/toString()/toLocaleString()

2、ES5的方法:forEach()/map()/filter()/every()/some()/reduce()/reduceRight()/indexOf()/lastIndexOf()

六、数组类型

数组一个特别的对象,那么如何确定一个对象是数组呢?

1、Array.isArray()函数可以判断:Array.isArray([]);//return true   Array.isArray({});//return false

2、instanceof操作符:[] instanceof Array;//return true    ({}) instanceof Array;//return false

七、类数组或者伪数组对象

有一些对象,也具有length属性,他们表现的像一个数组,如:document.getElementsByTagName()的返回值。

类数组不是数组,所以不能直接调用数组的方法,比如sort,concat等。但是可以通过另一种方法来调用(这得益于数组的方法都被设计成泛型方法了):

var a={0:"a",1:"b",2:"c",length:3};//这是个对象,但是是个类数组 array-like object

Array.prototype.join.call(a,"+");//返回"a+b+c"

八、字符串作为数组

字符串可以作为只读数组,通过[]访问字符串中的字符。数组的方法通过原型调用的方式也可以应用到字符串上,如

var s="test";

s[2]//return "s"

Array.prototype.join.call(s," ")//return "t e s t";

 

 

 

 

posted on 2013-09-27 16:54  leungrs  阅读(290)  评论(0编辑  收藏  举报