js中的数组(基础篇)

1、创建数组的方式

(1)、数组直接量

  var empty=[ ];

  var undefs=[ , ,];

(2)、调用构造函数

  var a=new Array();

  var a=new Array(5,4,3,2,1,"testing"} //js是一种非类型语言,数组中元素类型可以不一致

  var a=new Array(10);

 2、数组元素的读和写

  i=2;

  a[i]=3;

  a[i+1]="hello";

  a[a[i]]=a[0];

 数组元素下标大于等于0,小于2的32次方减1,若超出这个范围或是负数、浮点数等,js将其转为字符串作为对象属性名,而不是数组下标。

a[-1.23]=true;

3、添加数组元素,js不像java等一旦申明数组长度将保持不变,js中数组元素的个数是随时可以改变,且数组元素的下标不必在某个连续整数范围内,只有那些在数组中存在的元素才会被分配内存

a[0]=1;

a[999]=999;//只有下标是0或是999的元素才会被分配内存,之间的元素将不会被分配内存

4、删除数组

delete运算符只是将数组元素值赋予了undefined,数组元素还存在;真正删除数组元素用shift

5、数组的长度

和常规的对象属性不同,数组的长度是动态更新的

var a=new Array();//a.length==0

a=new Array(10);//a.length==10

a=new Array(1,2,3)//a.length==3;

a=[5,6];//a.length==2

a[49]=0;//a.length==50

由于数组中可能还有undefined元素,所以数组的长度是数组中元素的最大下标数加1

6、遍历数组元素

若数组元素下标是连续的可以用常规的for循环迭代元素,一般在迭代前我们要检验数组元素是否被定义

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

if(a[i])alert(a[i]);

7、截断和增长数组

若数组长度被赋予了比实际数组元素个数小的值,多余的元素将被丢弃;

若数组长度被赋予了比实际数组元素个数小的值,将在数组的尾部添加undefined类型的值,使得二者一致;

8、多维数组

原则上js是不支持多维数组的,但可以给数组中的元素赋予数组类型的值

9、数组中的方法

(1)、join( )

var a=[1,2,3];

s=a.join(","); //s=='1,2,3' 默认的也是采用','链接

(2)、reverse( ):跌倒原数组中的元素,而不是新创建一个数组

var a=new Array(1,2,3);a[0]=1

a.reverse( );//a[0]=3

var s=a.join;//s="3,2,1"

(3)、sort( ):默认采用字母表顺序排列

var a=[33,4,11,22];

a.sort( );//[11,22,33,4];

a.sort(function(a,b){return a-b});//数字顺序,[4,11,22,33]

(4)、contact():链接数组函数,会拆分一级参数数组

var a=[1,2,3,4];

a.contact(5,6);//a==[1,2,3,4,5,6]

a.contact([5,6]);//a==[1,2,3,4,5,6];

a.contact(4,[5,[6,7]);//a==[1,2,3,4,5,[6,7]]

(5)、截取子数组

var a=[1,2,3,4,5,6];

a.slice(0,3);//[1,2,3]

a.slice(3);//[4,5,6]

a.slice(1,-1);//[2,3,4,5,6]从第一个开始一直截取到最后一个

(6)、splice( ):插入或删除数组

var a=[1,2,3,4,5,6,7,8,9,10];

a.splice(4);//a is [1,2,3,4]

a.splice(1,2);//a is[1,4]

a.splice(1,1);//a is[1]

以上是截取,该函数还有插入功能(确切的说是截取加插入)

var a=[1,2,3,4,5];

a.splice(2,0,'a','b',);//a is[1,2,'a','b',3,4,5]

a.splice(2,2,[1,2],3);//a is [1,2,[1,2],3,3,4,5]

splice在插入元素的时候,并不将插入的元素展开

(7)、push() pop():元素添加到数组的尾部,或从尾部取出

var stack=[ ];

stack.push(1,2);//stack:[1,2]

stack.pop();//stack:[1]

stack.push([4,5]);//stack:[1,[4,5]]

stack.pop();//stack:[1]

(8)、unshift() shift():在数组的头部插入或删除数据,插入多个数据的时候一次性插入即插入元素的顺序不变

var a=[];

a.unshift(1);//a[1]

a.unshift(22);//a[1,22]

a.shift();//a[1]

a.unshift(3,[4,5]);a[3,[4,5],1]

(9)、toString( ):将数组中的元素转为字符串,然后输出这些字符串列表,字符串之间用逗号隔开

[1,2,3].toString();//'1,2,3'

["a","b","c"].toString();//'a,b,c"

[1,[2,'c']].toString();//'1,2,c'

10、类似数组的对象

var a={ };

var i=0;

while(i<10){

a[i]=i*i;//把i看成是对象的属性,js会把整形的i转为字符串类型,这里是采用关联数组的方式访问对象的属性

i++;

}

a.length=i;

var total=0;

for(var j=0;j<a.length;j++)

total+=a[j];

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值