如果您有一个项目列表(例如,汽车名称列表),则将汽车存储在单个变量中可能如下所示:
let car1 = "Saab";
let car2 = "Volvo";
let car3 = "BMW";
但是,如果您想循环浏览汽车并找到特定的一辆,该怎么办?如果您没有 3 辆车,而是 300 辆怎么办?
解决方案是数组!
数组可以在一个名称下保存多个值,并且您可以通过引用索引号来访问这些值。
使用数组文字是创建 JavaScript 数组的最简单方法。
语法:
const
array_name = [
item1,
item2, ...];
使用以下方式声明数组是一种常见的做法const关键字。
学习更多关于const本章中的数组:JS 数组常量。
空格和换行符并不重要。一个声明可以跨越多行:
您还可以创建一个数组,然后提供元素:
以下示例还创建一个数组,并为其赋值:
上面的两个例子的作用完全相同。
没有必要使用new Array()
。
为了简单性、可读性和执行速度,请使用数组文字方法。
您可以通过引用来访问数组元素索引号:
const cars = ["Saab", "Volvo", "BMW"];
let car = cars[0];
亲自试一试 »
笔记:数组索引从 0 开始。
[0] 是第一个元素。 [1] 是第二个元素。
该语句更改了第一个元素的值cars
:
cars[0] = "Opel";
JavaScript 方法toString()
将数组转换为一串(逗号分隔)数组值。
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
结果:
使用 JavaScript,可以通过引用数组名称来访问完整数组:
数组是一种特殊类型的对象。这typeof
JavaScript 中的运算符对于数组返回"object"。
但是,JavaScript 数组最好被描述为数组。
数组使用数字访问其"elements"。在这个例子中,person[0]
返回 John:
对象使用名称访问其"members"。在这个例子中,person.firstName
返回 John:
JavaScript 变量可以是对象。数组是特殊类型的对象。
因此,同一个数组中可以包含不同类型的变量。
您可以在数组中包含对象。您可以在数组中包含函数。您可以在数组中包含数组:
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
JavaScript 数组的真正优势在于内置的数组属性和方法:
cars.length // Returns the number of elements
cars.sort() // Sorts the array
数组方法将在接下来的章节中介绍。
这个length
数组的属性返回数组的长度(数组元素的数量)。
这个length
属性始终比最高数组索引大一。
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[fruits.length - 1];
亲自试一试 »
循环数组的一种方法是使用for
环形:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
亲自试一试 »
您还可以使用Array.forEach()
功能:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function myFunction(value) {
text += "<li>" + value + "</li>";
}
亲自试一试 »
向数组添加新元素的最简单方法是使用push()
方法:
const fruits = ["Banana", "Orange", "Apple"];
fruits.push("Lemon"); // Adds a new element (Lemon) to fruits
亲自试一试 »
也可以使用以下命令将新元素添加到数组中length
属性:
const fruits = ["Banana", "Orange", "Apple"];
fruits[fruits.length] = "Lemon"; // Adds "Lemon" to fruits
亲自试一试 »
警告 !
添加具有高索引的元素可能会在数组中创建未定义的 "holes":
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon"; // Creates undefined "holes" in fruits
亲自试一试 »
许多编程语言支持具有命名索引的数组。
具有命名索引的数组称为关联数组(或哈希)。
JavaScript 确实如此不是支持具有命名索引的数组。
在 JavaScript 中,数组总是使用编号索引。
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length; // Will return 3
person[0]; // Will return "John"
亲自试一试 »
警告 !!
如果使用命名索引,JavaScript 会将数组重新定义为对象。
之后,一些数组方法和属性将产生结果不正确。
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // Will return 0
person[0]; // Will return undefined
亲自试一试 »
在 JavaScript 中,数组使用编号索引。
在 JavaScript 中,物体使用命名索引。
数组是一种特殊的对象,具有编号索引。
JavaScript 有一个内置的数组构造函数new Array()
。
但您可以放心使用[]
反而。
这两个不同的语句都创建一个名为点的新空数组:
const points = new Array();
const points = [];
这两个不同的语句都创建一个包含 6 个数字的新数组:
const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
亲自试一试 »
这个new
关键字可能会产生一些意想不到的结果:
// Create an array with three elements:
const points = new Array(40, 100, 1);
亲自试一试 »
// Create an array with two elements:
const points = new Array(40, 100);
亲自试一试 »
// Create an array with one element ???
const points = new Array(40);
亲自试一试 »
const points = [40];
不等于:
const points = new Array(40);
// Create an array with one element:
const points = [40];
亲自试一试 »
// Create an array with 40 undefined elements:
const points = new Array(40);
亲自试一试 »
一个常见的问题是:我如何知道变量是否是数组?
问题是 JavaScript 运算符typeof
返回“object
”:
const fruits = ["Banana", "Orange", "Apple"];
let type = typeof fruits;
亲自试一试 »
typeof 运算符返回对象,因为 JavaScript 数组是一个对象。
为了解决这个问题 ECMAScript 5 (JavaScript 2009) 定义了一个新方法Array.isArray()
:
Array.isArray(fruits);
亲自试一试 »
这个instanceof
如果对象是由给定构造函数创建的,则运算符返回 true:
const fruits = ["Banana", "Orange", "Apple"];
fruits instanceof Array;
亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!