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
    }
}
01-26 13:10
查看更多