02-数组概览
8.1 数组概览
在深入讲解之前,先来回顾一下数组的基础知识。数组(不像对象)是有序的,它的下标从0开始。JavaScript中的数组可以是非齐次的,也就是说,数组中的元素可以是不同的类型(遵循这个原则的话,数组的元素可以是另一个数组,或对象)。字面量数组是由方括号构建的,这个方括号还能根据下标来访问数组元素。每个数组都有一个length属性,表示数组中有多少元素。给大于数组元素长度的下标赋值,会增加数组长度,而尝试访问超过数组元素下标的元素时,会得到undefined。也可以用数组构造器创建数组,即便它不常用。在继续之前,先看看下面的代码,确保这些内容都理解了:
// 数组字面量
const arr1 = [1, 2, 3]; //整数数组
const arr2 = ["one", 2, "three"]; // 非齐次数组
const arr3 = [[1, 2, 3], ["one", 2, "three"]]; //包含数组的非齐次数组
const arr4 = [ //非齐次数组
{ name: "Fred", type: "object", luckyNumbers = [5, 7, 13] },
[
{ name: "Susan", type: "object" },
{ name: "Anthony", type: "object" },
],
1,
function() { return "arrays can contain functions too"; },
"three",
];
// 给数组元素赋值
arr1[0]; // 1
arr1[2]; // 3
arr3[1]; // ["one", 2, "three"]
arr4[1][0]; // { name: "Susan", type: "object" }
// 获取数组长度
arr1.length; // 3
arr4.length; // 5
arr4[1].length; // 2
// 增加数组长度
arr1[4] = 5;
arr1; // [1, 2, 3, undefined, 5]
arr1.length; // 5
// 访问超过数组元素下标的元素
// 并*不会*改变数组大小
arr2[10]; // undefined
arr2.length; // 3
// 构造数组 (很少用)
const arr5 = new Array(); // empty array
const arr6 = new Array(1, 2, 3); // [1, 2, 3]
const arr7 = new Array(2); // array of length 2 (all elements undefined)
const arr8 = new Array("2"); // ["2"]