数组基本内容
声明
在Javascript里有两种方式来声明一个空的数组,例如:
let arr = new Array();
let arr = [];
赋值
我们也可以在声明数组的时候进行赋值,例如:let fruits = ["Apple", "Orange", "Plum"];
添加/修改/访问
声明数组后,我们可以通过索引号(默认从0开始)来修改或者访问数组的内容,也可以添加新的元素进去,例如:let fruits = ["Apple", "Orange", "Plum"];
alert( fruits[0] ); // Apple
alert( fruits[1] ); // Orange
alert( fruits[2] ); // Plum
fruits[2] = 'Pear'; // now ["Apple", "Orange", "Pear"]
fruits[3] = 'Lemon'; // now ["Apple", "Orange", "Pear", "Lemon"]
数组长度
数组提供的length属性来记录数组的长度,例如:
let fruits = ["Apple", "Orange", "Plum"];
alert( fruits.length ); // 3
数组存储类型
理论上数组可以存储所有类型的元素,例如:
// mix of values
let arr = [ 'Apple', { name: 'John' }, true, function() { alert('hello'); } ];
// get the object at index 1 and then show its name
alert( arr[1].name ); // John
// get the function at index 3 and run it
arr[3](); // hello
ps:尾部逗号
因为数组也是对象,如果我们需要对数组进行添加或移除元素,我们可以在最后一个元素后面添加逗号,例如:let fruits = [
"Apple",
"Orange",
"Plum",
];
数组方法pop/push, shift/unshift
数组提供了内置方法pop/push,shift/unshift来对数组中的元素进行操作。
(1)push:向数组的尾部添加元素;
(2)shift:从数组的头部取走一个元素并返回,此时数组中第二个元素就变成第一个了;
(3)pop:从数组尾部取走一个元素并返回;
(4)unshift:向数组头部添加元素;
pop:
let fruits = ["Apple", "Orange", "Pear"];
alert( fruits.pop() ); // remove "Pear" and alert it
alert( fruits ); // Apple, Orange
push:
let fruits = ["Apple", "Orange"];
fruits.push("Pear");
alert( fruits ); // Apple, Orange, Pear
shift:
let fruits = ["Apple", "Orange", "Pear"];
alert( fruits.shift() ); // remove Apple and alert it
alert( fruits ); // Orange, Pear
unshift:
let fruits = ["Orange", "Pear"];
fruits.unshift('Apple');
alert( fruits ); // Apple, Orange, Pear
添加多个元素:
let fruits = ["Apple"];
fruits.push("Orange", "Peach");
fruits.unshift("Pineapple", "Lemon");
// ["Pineapple", "Lemon", "Apple", "Orange", "Peach"]
alert( fruits );
遍历
数组可以采用以下几种方式进行遍历,例如:
let arr = ["Apple", "Orange", "Pear"];
for (let i = 0; i < arr.length; i++) {
alert( arr[i] );
}
let fruits = ["Apple", "Orange", "Plum"];
// iterates over array elements
for (let fruit of fruits) {
alert( fruit );
}
let arr = ["Apple", "Orange", "Pear"];
for (let key in arr) {
alert( arr[key] ); // Apple, Orange, Pear
}
高级部分
关于length关键字
数组提供了length属性来查看数组的长度,但是要注意的是length记录的不是元素的个数,而是数组索引号的个数,例如:
let fruits = [];
fruits[123] = "Apple";
alert( fruits.length ); // 124
length属性允许我们对数组进行裁剪,这个过程是不可逆的,例如:
let arr = [1, 2, 3, 4, 5];
arr.length = 2; // truncate to 2 elements
alert( arr ); // [1, 2]
arr.length = 5; // return length back
alert( arr[3] ); // undefined: the values do not return
new Array()
声明数组除了用方括号"[]",还有另外一种方式,例如:let arr = new Array("Apple", "Pear", "etc");
但一般情况下我们用[]比较多,因为方便。
在使用new Array()时,我们可以传入数字来表示数组的长度,此时数组的元素都为undefined,例如:
let arr = new Array(2); // will it create an array of [2] ?
alert( arr[0] ); // undefined! no elements.
alert( arr.length ); // length 2
多维数组
就像其他语言一样,Javascript也提供了多维数组,例如:
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
alert( matrix[1][1] ); // the central element
toString()
数组默认实现了toString()方法,例如:
let arr = [1, 2, 3];
alert( arr ); // 1,2,3
alert( String(arr) === '1,2,3' ); // true
toString()返回的结果是字符串并且是以逗号为分隔的数组元素集。