为了存储有序的集合,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
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
可以使用数组的length属性来循环数组的元素
let arr = ["Apple", "Orange", "Pear"];
for (let i = 0; i < arr.length; i++) {
alert( arr[i] );
}
也可以使用for…of语法来循环数组
let arr = ["Apple", "Orange", "Pear"];
for (let i = 0; i < arr.length; i++) {
alert( arr[i] );
}
可以使用splice来删除数组中的元素
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // from index 1 remove 1 element
alert( arr ); // ["I", "JavaScript"]
可以使用slice来截取数组
let arr = ["t", "e", "s", "t"];
alert( arr.slice(1, 3) ); // e,s (copy from 1 to 3)
alert( arr.slice(-2) ); // s,t (copy from -2 till the end)
可以使用concat来合并数组
let arr = [1, 2];
// create an array from: arr and [3,4]
alert( arr.concat([3, 4]) ); // 1,2,3,4
// create an array from: arr and [3,4] and [5,6]
alert( arr.concat([3, 4], [5, 6]) ); // 1,2,3,4,5,6
// create an array from: arr and [3,4], then add values 5 and 6
alert( arr.concat([3, 4], 5, 6) ); // 1,2,3,4,5,6
可以使用forEach来迭代数组中的元素
["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => {
alert(`${item} is at index ${index} in ${array}`);
});
可以使用map来迭代数组中的元素
let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length);
alert(lengths); // 5,7,6
可以使用sort来对数组中的元素进行排序
let arr = [ 1, 2, 15 ];
// the method reorders the content of arr
arr.sort();
alert( arr ); // 1, 15, 2
排序的时候会把值转换为字符串进行比较,就导致结果和我们的预期不一样,为了解决排序的问题可以自定义排序的规则
function compareNumeric(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
let arr = [ 1, 2, 15 ];
arr.sort(compareNumeric);
alert(arr); // 1, 2, 15
使用reverse进行反转
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert( arr ); // 5,4,3,2,1
可以使用join进行连接
let arr = ['Bilbo', 'Gandalf', 'Nazgul'];
let str = arr.join(';'); // glue the array into a string using ;
alert( str ); // Bilbo;Gandalf;Nazgul
可以使用reduce来重新计算数组的值,比如求和
let arr = [1, 2, 3, 4, 5];
// removed initial value from reduce (no 0)
let result = arr.reduce((sum, current) => sum + current);
alert( result ); // 15