1.数组概念:数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JS中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其它数组。
如下图中的例子,数组是可以包含不同类型的元素的。
2.创建数组的2种方式:
2.1通过字面量的方式创建数组,如下代码所示:
var BAT = ['Alibaba', 'Tencent', 'Baidu']; var students = [{name : 'Bosn', age : 27}, {name : 'Nunnly', age : 3}]; var arr = ['Nunnly', 'is', 'big', 'keng', 'B', 123, true, null]; var arrInArr = [[1, 2], [3, 4, 5]];
这里要注意的是,创建数组时,未指定元素值的情况,看下面代码:
var commasArr1 = [1, , 2]; // 1, undefined, 2 var commasArr2 = [,,]; // undefined * 2
2.2.通过new Array的方式创建数组,下面代码例举出了3种不同的情况
var arr = new Array(); var arrWithLength = new Array(100); // undefined * 100 var arrLikesLiteral = new Array(true, false, null, 1, 2, "hi"); // 等价于[true, false, null, 1, 2, "hi"];
3.数组元素的操作方式
3.1数组元素的读写,通过索引的方式进行元素读写:
var arr = [1, 2, 3, 4, 5]; arr[1]; // 2 arr.length; // 5 arr[5] = 6; arr.length; // 6 delete arr[0]; arr[0]; // undefined
3.2 数组元素增删,头部元素和尾部元素的增删方式不太相同,注意的是,通过delete()方式删除元素时,并不会改变数组的大小
var arr = []; arr[0] = 1; arr[1] = 2; arr.push(3); arr; // [1, 2, 3] //尾部添加元素 arr[arr.length] = 4; // equal to arr.push(4); arr; // [1, 2, 3, 4] //头部添加元素 arr.unshift(0); arr; // [0, 1, 2, 3, 4];
delete arr[2]; arr; // [0, 1, undefined, 3, 4] arr.length; // 5 2 in arr; // false //删除尾部元素 arr.length -= 1; arr; // [0, 1, undefined, 3, 4], 4 is removed arr.pop(); // 3 returned by pop arr; // [0, 1, undefined], 3 is removed //头部删除元素 arr.shift(); // 0 returned by shift arr; // [1, undefined]
3.3数组元素的迭代,通过for循环和for-in循环的方式对元素进行迭代
var i = 0, n = 10; var arr = [1, 2, 3, 4, 5]; for (; i < n; i++) { console.log(arr[i]); // 1, 2, 3, 4, 5 } for(i in arr) { console.log(arr[i]); // 1, 2, 3, 4, 5 }
这里要注意的一点是,有for-in循环是可以遍历出prototype的属性的,如下代码所示,需要通过hasOwnProperty()方法来过滤掉prototype属性
Array.prototype.x = 'inherited'; for(i in arr) { console.log(arr[i]); // 1, 2, 3, 4, 5, inherited } for(i in arr) { if (arr.hasOwnProperty(i)) { console.log(arr[i]); // 1, 2, 3, 4, 5 } }