|
|
我们常常将对象和数组作为不同的数据类型来处理,这样就可以把对象和数组作为单独的类型来处理.但是要完全掌握对象和数组的行为,你还必须了解数组不过是一个具有额外功能层的对象.我们使用typeof就会发现这一点.javascript1.1开始支持数组.
-----------------------------
数组是一种数据类型,它包含了编码的值,每个编码的值被称作该数组的一个元素,每个元素
的编码被称为下标.由于js是一种无类型语言,所以一个数组的元素可以是具有任意类型的数
据类型.统一数组的不同元素可以具有不同的类型,数组的元素甚至可以包含其它数组,这样
就可以创建一个复杂的数据结构,即元素为数组的数组.
-----------------------------
Array构造函数创建数组的三种方式
var a = new Array();//一个没有元素的空数组var a = new Array(5,4,3,"testing");//可以是任意类型,明确制定前n个元素的值var a = new Array(5);//具有指定的元素个数(每个元素的值都是undefined),还将数组的length属性设成了指定的值.
-----------------------------
使用数组直接量来创建数组:
var a = [2,3,5,7];var b = ['a',true,1.24];数组直接量还可以包含对象直接量或其它的数组直接量
var c = [[1,2,3],[4,5,6],[7,8,9]];var c = [1.2,"javascript",true,(x:1,y:2)];
-----------------------------
数组元素的读写
var m_value = a[0];a[0] = 2;//第一个元素下标是0
[]还可以用来存取已命名对象的属性
a['salary'] = 2;//告诉我们对象和数组本质是相同的.
-----------------------------
数组的下标必须大于等于0并小于2的23次方减1.如果你使用的数字太大,或使用了负数,浮点
数(或布尔值),js会把它转换为一个字符串,用生成的字符串作为对象属性的名字,而不是作
为数组的下标.
a[-1.23]= true;//创建了一个名为"-1.23"的属性,而不是定义一个新的数组元素
-----------------------------
定义数组时候不必指定元素的个数
a[0] = 1;a[1000] = "this is element 1000";//只有a[0]和a[1000]分配到了内存,中间的元素并没有分配到内存.
-----------------------------
数组的长度length
var a = new Array();a = new Array(10);a = new Array(1,2,3);a = [4,5];//长度在变化a[5] = -1;//a.length==6;a[49] = 0;//a.length==50用于遍历
var fruits=["mango","banana","cherry","pear"];for(var i = 0;i<fruits.length;i++){alert(fruits[i]);}
length可以被设置
和delete的区别
-----------------------------
多维数组
js并不支持真正的多维数组,但是它允许使用元素为数组的数组.
-----------------------------
数组的方法
除了[]运算符外,还可以使用类Array提供的各种方法来操作数组.
join();var a = [1,2,4];var s = a.join();var s2 = a.join(", ");和String.split()相反
-----------------------------
reserse();
var a = new Array(1,2,3);a.reverse();var s = a.join();-----------------------------
sort();
var a = new Array("banana","cherry","apple");a.sort();var s = a.join();
var a = [33,4,1111,222]
a.sort();
a.sort(function(a,b){reuturn a-b;});
-----------------------------
var a = [1,2,3];a.concat(4,5);a.concat([4,5]);a.concat([4,5],[6,7]);//[1,2,3,4,5,6,7]a.concat(4,[5,[6,7]]);//[1,2,3,4,5,[6,7]] 不能展开数组的数组
-----------------------------
slice()
var a = [1,2,3,4,5];a.slice(0,3);//[1,2,3]a.slice(3);//[4,5]a.slice(1,-1);//[2,3,4]a.slice(-3,-2);//[3]
-----------------------------
toString()
[1,2,3].toString();//"1,2,3"[1,[2,'c']].toString();//"1,2,c"
参考资料:js权威指南 |
|