跳到主要内容

JavaScript 数组

提示
  1. 创建数组的方法:可以使用数组字面量 [] 或者 new 关键字来创建数组。尽管两种方法都有效,但推荐使用数组字面量。
  2. 访问和修改数组元素:可以通过索引(从0开始)访问数组元素,并使用内置方法(如 push()unshift())添加或移除元素。也可以直接通过索引修改数组的内容。
  3. 数组的内置方法和特性:JavaScript 提供了多种数组操作方法,如 sort()slice()concat()。数组在JavaScript中被视为对象,因此数组的元素和属性存储是基于引用的,意味着数组的复制会影响原数组。

数组是可以一次存储多个值的对象。例如,

const words = ["hello", "world", "welcome"];

这里,words 是一个数组。该数组存储了 3 个值。

创建数组

您可以通过两种方式创建数组:

1. 使用数组字面量

创建数组最简单的方法是使用数组字面量 []。例如,

const array1 = ["eat", "sleep"];

2. 使用 new 关键字

您也可以使用 JavaScript 的 new 关键字创建数组。

const array2 = new Array("eat", "sleep");

在上述两个示例中,我们都创建了一个包含两个元素的数组。

注意:建议使用数组字面量来创建数组。

以下是更多数组示例:

// 空数组
const myList = [];

// 数字数组
const numberArray = [2, 4, 6, 8];

// 字符串数组
const stringArray = ["eat", "work", "sleep"];

// 混合数据类型的数组
const newData = ["work", "exercise", 1, true];

您还可以在数组内存储数组、函数和其他对象。例如,

const newData = [
{ task1: "exercise" },
[1, 2, 3],
function hello() {
console.log("hello");
},
];

访问数组元素

您可以使用索引 (0, 1, 2 ) 访问数组元素。例如,

const myArray = ["h", "e", "l", "l", "o"];

// 第一个元素
console.log(myArray[0]); // "h"

// 第二个元素
console.log(myArray[1]); // "e"

JavaScript 中的数组索引

注意:数组的索引从 0 开始,而不是 1。

向数组中添加元素

您可以使用内置方法 push()unshift() 向数组中添加元素。

push() 方法在数组末尾添加一个元素。例如,

let dailyActivities = ["eat", "sleep"];

// 在末尾添加一个元素
dailyActivities.push("exercise");

console.log(dailyActivities); // ['eat', 'sleep', 'exercise']

unshift() 方法在数组开头添加一个元素。例如,

let dailyActivities = ["eat", "sleep"];

// 在开始处添加一个元素
dailyActivities.unshift("work");

console.log(dailyActivities); // ['work', 'eat', 'sleep']

更改数组元素

您也可以通过访问索引值添加元素或更改元素。

let dailyActivities = ["eat", "sleep"];

// 这会在索引 2 处添加新元素 'exercise'
dailyActivities[2] = "exercise";

console.log(dailyActivities); // ['eat', 'sleep', 'exercise']

假设一个数组有两个元素。如果您尝试在索引 3(第四个元素)处添加一个元素,那么第三个元素将是未定义的。例如,

let dailyActivities = ["eat", "sleep"];

// 这会在索引 3 处添加新元素 'exercise'
dailyActivities[3] = "exercise";

console.log(dailyActivities); // ["eat", "sleep", undefined, "exercise"]

基本上,如果您尝试向高索引添加元素,那么中间的索引将具有未定义的值。

从数组中移除元素

您可以使用 pop() 方法从数组中移除最后一个元素。pop() 方法还会返回被移除的值。例如,

let dailyActivities = ["work", "eat", "sleep", "exercise"];

// 移除最后一个元素
dailyActivities.pop();
console.log(dailyActivities); // ['work', 'eat', 'sleep']

// 从 ['work', 'eat', 'sleep'] 中移除最后一个元素
const removedElement = dailyActivities.pop();

// 获取被移除的元素
console.log(removedElement); // 'sleep'
console.log(dailyActivities); // ['work', 'eat']

如果您需要移除第一个元素,可以使用 shift() 方法。shift() 方法会移除第一个元素,并返回被移除的元素。例如,

let dailyActivities = ["work", "eat", "sleep"];

// 移除第一个元素
dailyActivities.shift();

console.log(dailyActivities); // ['eat', 'sleep']

数组长度

您可以使用 length 属性找到数组的长度(数组中元素的数量)。例如,

const dailyActivities = ["eat", "sleep"];

// 这会给出数组中元素的总数
console.log(dailyActivities.length); // 2

数组方法

在 JavaScript 中,有各种数组方法可用,使执行有用的计算变得更容易。

一些常用的 JavaScript 数组方法是:

方法描述
concat()连接两个或更多数组,并返回结果
indexOf()搜索数组的一个元素,并返回其位置
find()返回通过测试的数组元素的第一个值
findIndex()返回通过测试的数组元素的第一个索引
forEach()为每个元素调用一个函数
includes()检查数组是否包含指定的元素
push()在数组末尾添加一个新元素,并返回数组的新长度
unshift()在数组开头添加一个新元素,并返回数组的新长度
pop()移除数组的最后一个元素,并返回被移除的元素
shift()移除数组的第一个元素,并返回被移除的元素
sort()以字母顺序对字符串元素进行排序,并按升序排列
slice()选择数组的一部分,并返回新数组
splice()移除或替换现有元素和/或添加新元素

示例:JavaScript 数组方法

let dailyActivities = ["sleep", "work", "exercise"];
let newRoutine = ["eat"];

// 按字母顺序对元素进行排序
dailyActivities.sort();
console.log(dailyActivities); // ['exercise', 'sleep', 'work']

// 查找字符串的索引位置
const position = dailyActivities.indexOf("work");
console.log(position); // 2

// 切割数组元素
const newDailyActivities = dailyActivities.slice(1);
console.log(newDailyActivities); // [ 'sleep', 'work']

// 连接两个数组
const routine = dailyActivities.concat(newRoutine);
console.log(routine); // ["exercise", "sleep", "work", "eat"]

注意:如果元素不在数组中,indexOf() 返回 -1。

访问 JavaScript 数组方法 了解更多。

JavaScript 数组的工作原理

在 JavaScript 中,数组是一个对象。数组的索引是对象键。

由于数组是对象,因此数组元素是通过引用存储的。因此,当数组值被复制时,复制的数组中的任何更改也会反映在原始数组中。例如,

let arr = ["h", "e"];
let arr1 = arr;
arr1.push("l");

console.log(arr); // ["h", "e", "l"]
console.log(arr1); // ["h", "e", "l"]

您还可以通过在数组中传递命名键来存储值。例如,

let arr = ["h", "e"];
arr.name = "John";

console.log(arr); // ["h", "e"]
console.log(arr.name); // "John"
console.log(arr["name"]); // "John"

JavaScript 中的数组索引

然而,不建议通过传递任意名称在数组中存储值。

因此,在 JavaScript 中,如果值是有序集合,应该使用数组。否则最好使用 { } 的对象。

推荐文章