JavaScript中Arrays的不同

    JavaScript 中的数组,和其他语言中的数组一样,用来存储数据,和java,c,c++一样,数组元素从下标0开始。当然,它有它的特色,如javascript是无类型(untyped language)语言,同一数组中的元素可以是不同类型。顺便插入一下,javascript支持三种基本(primitive)数据类型,即,number,string,boolean,两种tivial data types, 即,null和undefined,还支持复合类型,数组和类。由此,一个数组的每个元素可以是以上类型中的任何一种。下面直入主题:

创建数组
在javascript中,创建数组和c,c++,java一样,也有如下两种创建方式,但是,它的类型无关给它了特别。
var a = new Array();//创建一个空数组
var a  = [1,true];
//创建一个数组,第一个元素为number“1”,第二个位boolean类型的“true”

在运用new操作符,有几个构造函数,分叙如下:
var a = new Array(10);//创建一个数组,length=10
var a = new Array(4,3,2,1,"test");//创建一个数组,前四个元素初始化为3,2,1,"test"
这个小特别,其实也没有什么太大的与众不同,可是,但当我们发现javascript中的数组的长度可以由通过如下方式,修改属性值length后而改变数组长度,或许我们要另眼看待其灵活。
var a=[1,2,3,4,'2',true];
a.length=5;//a=[1,2,3,4,'2']
除此之外,Array中的元素可以在占用最少资源的情况下,任意增加(元素个数不操过0xFFFFFFFF -1)。这是因为,javascript中保存数组元素时,只保存已赋值的元素,其他元素不分配内存。例如:
a[0] = 1;
a[10000]="this is element 10,000";
//这个相当于在数组中加入一个a[10000]元素,同时,数组长度自然增加

解释器只给a[0]和a[10000]分配内存,中间的9,999元素不分配内存。同时,在不给中间的元素赋值时,它们都是undefined类型。下面是array 的其他方法:
join( );
reverse( );
sort( );
concat( );
slice( );
splice( );
push( ) and pop( );
unshift( ) and shift( );
toString( ) and toLocaleString( )
其中较特别的是splice(),push(),pop(),unshift&shift(),splice()可以删除,增加数组中的元素,或是同时删除和增加数组中的元素;而push()&pop()则是把数组看成为一个stack,把数组的最大标号作为出口;shift()&unshift()也是把数组当作为一个stack,不过是把数组的最小标号元素array[0]作为出口,它们都会自动更新元素的位置。具体如下:
var a = [1,2,3,4,5,6,7,8];
//splice在只有一个参数是,会把该参数之后的元素都删掉
a.splice(4);    // Returns [5,6,7,8]; a is [1,2,3,4]

//若有两个参数,第二个参数为删除元素的个数
a.splice(1,2);  // Returns [2,3]; a is [1,4]
a.splice(1,1);  // Returns [4]; a is [1]
var b = [1,2,3,4,5];

//若有多余两个参数,则从第三个参数开始,都是插入的元素,而且从第一个参数所指示的位置开始插入元素
b.splice(2,0,'a','b');  // Returns []; a is [1,2,'a','b',3,4,5]
b.splice(2,2,[1,2],3);  // Returns ['a','b']; a is [1,2,[1,2],3,3,4,5]

//push返回数组的长度,pop返回弹出的值
var stack = [];       // stack: []
stack.push(1,2);      // stack: [1,2]     Returns 2
stack.pop(  );        // stack: [1]       Returns 2
stack.push(3);        // stack: [1,3]     Returns 2
stack.pop(  );        // stack: [1]       Returns 3

//unshift返回数组的长度,shift返回弹出的值
var a = [];            // a:[]
a.unshift(1);          // a:[1]         Returns: 1
a.unshift(22);         // a:[22,1]      Returns: 2
a.shift(  );           // a:[1]         Returns: 22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值