标签:
javascript中的数组是无类型的,也就是说数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同类型。数组元素甚至可以是对象或其他数组,这样可以利用数组创建复杂的数据结构,如对象的数组和数组的数组。
下面从头开始看javascript数组有什么特点:
var array1=[1,,2];//数组有3个元素,中间的那个元素值为undefined var array2=[,,];//数组有2个元素,都是undefined
因为数组直接量的语法允许有可选的结尾的逗号,所以只有2个元素而不是三个。
创建数组的几种方式:
1、数组字面量方法
var array=[1,,2];
这种形式就是数组字面量法。一般是使用这种方法创建数组。
2、构造函数法
1 // 调用时没有参数 2 var array=new Array(); 3 // 该方法创建一个没有任何元素的空数组,等同于数组字面量[] 4 // 调用时有一个数组参数,指定长度 5 var array=new Array(10); 6 // 此时数组中没有存储任何值,没有存储任何值,没有存储任何值,连索引也没有 7 // 还可以这样创建 8 var array=new Array(1,2,3,4); 9 // 同数组字面量方法一样,但没有数组字面量方法简单
javascript中有一种特殊的数组叫稀疏数组。
稀疏数组就是包含从0开始的不连续索引的数组。通俗点说就是本来数组中连续的索引都有值,但是稀疏的某个索引上可能没有值,造成了数组中实际存储的元素个数<length-1;
注意:
在数组字面量中省略值时不会创建稀疏数组,因为省略的值为undefined。
关于数组长度length一些值得注意的地方:
1、如果为一个元素赋值,它的索引 i 大于或等于现有数组的长度时,length属性的值将设置为 i+1;
2、设置Length的属性为一个小于当前长度的非负整数 n 时,当前数组中那些索引大于或等于n 的元素将从中删除;
1 a=[1,2,3,4,5]; 2 a.length=3;//1,2,3 3 a.length=0;//什么都没有了 4 a.length=6;//1,2,3,4,5,undefined
在ECMAScript5中,可以用Object.defindProperty()让数组的length属性变成只读的:
1 a=[1,2,3]; 2 Object.defineProperty(a,"length",{ 3 writable:false 4 }); 5 a.length=0;//a不会改变
数组元素的添加和删除:
添加:
1、为新索引赋值:
a=[]; a[0]=1; a[1]=2;
2、使用push()方法:每次在数组的尾部添加元素
a=[]; a.push(1); a.push(1,2);
可以使用delete删除数组中的一个元素,但是,对一个数组元素使用delete不会修改数组的length属性。如果从数组中删除一个元素,它就会变成稀疏数组。
还有一些关于数组的方法:
pop():返回数组的最后一项;
shift():移除数组中的第一项并返回该项;
unshift():在数组前端添加任意个项并返回新数组的长度。
标签:
原文地址:http://www.cnblogs.com/luxueping/p/5593523.html