Array数组对象的作用:使用单独的变量名来存储一系列的值。
数组可以用数组名存储一系列变量的开始地址|基地址,然后根据每个数组元素的下标不同,计算出其偏移地址,以便很快的计算出该元素所处的地址,进行访问。
数组字面量literal
var arr = [1, 2, 3];
构造时传入数组元素
var arr = new Array(123, "asd", false); // length为传入元素的个数。
先构造,再用下标赋值。
var arr = new Array(3); // (3) [empty × 3],length为参数给出的3。
arr[0] = 123;
arr[1] = "asd";
arr[2] = false; // 元素填充完毕
用非数值定义映射关系(不推荐)。
var arr = new Array(); // 可以不指定数组长度
arr["aaa"] = 123; // 定义多个映射不影响数组的length值。
arr[false] = "asd";
arr[null] = false;
console.log(arr); // [aaa: 123, false: "asd", null: false]
数组的访问
arr[index] arr[key] // 不推荐
arr = ["first", 2, false];
for (let index = 0; index < arr.length; index++) {
console.log(index, arr[index]);
}
for..in
,可遍历数组和对象。for (let index in arr) {
console.log(index, arr[index]);
}
for..of
,只能遍历数组(数组是iterable,可迭代的),不能遍历对象。for (let element of arr) {
console.log(element);
}
forEach()
arr.forEach(function(value, key) {
console.log(key, value);
});
map()
arr.map(function(value, key) {
// statements... // 可以做遍历。
return key + "-" + value; // 新数组的元素组成。
});
concat(...items)
合并多个数组|字符串
join(?separator)
返回所有元素的字符串拼接格式。
shift()
从数组头部删除元素。
unshift(...items)
向数组头部添加多个元素。
pop()
出栈,从数组尾部删除一个元素。
push(...items)
入栈,向数组尾部添加多个元素。
reverse()
反转数组元素顺序(会改变原数组)。
toString()
slice(?start, ?end)
获取原数组的子数组(区间[start, end) ),不影响原数组。
splice(start, ?deleteCount, ...items)
从start开始,删除deleteCount个元素。会改变原数组的长度。
删除数组中的第4个元素(下标为3)
arr = [0,1,2,3,4,5];
(6) [0, 1, 2, 3, 4, 5]
arr.splice(3,1)
[3]
arr
(5) [0, 1, 2, 4, 5]
sort(?compareFn)
按一定方式对数组元素进行排序
forEach(callbackFn, ?thisArg)
遍历数组的value和key。
map(callbackFn, ?thisArg)
对数组的value-key对进行遍历,操作,返回一个新的数组。