首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 2D Array – JS 中的二维数组

JavaScript 2D Array – JS 中的二维数组

在 JavaScript 编程中,我们都习惯于创建和使用一维数组。这些是包含元素(相似数据类型或多种数据类型的元素)的数组。

但知道 JS 中存在二维数组(2D array)也很好。

在本文中,您将了解什么是二维数组以及它们在 JavaScript 中的工作原理。它与其他编程语言有很大不同,因为从技术上讲,JavaScript 中不存在二维数组。

什么是二维数组?

二维数组,也称为 2D 数组,是以行和列的网格状结构排列的数据元素的集合。数组中的每个元素称为一个单元格,可以通过其行和列索引/索引进行访问。

[ a1, a2, a3, ..., an,

b1, b2, b3, ..., bn,

c1, c2, c3, ..., cn,

.

.

.

z1, z2, z3, ..., zn ]

在 JavaScript 中,没有像 C、C++ 和 Java 等其他常用编程语言那样用于创建 2D 数组的直接语法。

您可以在 JavaScript 中通过锯齿状数组(数组的数组)创建二维数组。例如,下面是锯齿状数组的样子:

let twoDimensionalArr = [ [ a1, a2, a3, ..., an ],

[ b1, b2, b3, ..., bn ],

[ c1, c2, c3, ..., cn ],

.

.

.

[ z1, z2, z3, ..., zn ] ];

但有一个限制。需要注意的是,二维数组具有固定的大小。这意味着一旦创建它们,行数和列数就应该是固定的。此外,每行应具有相似数量的元素(列)。

例如,下面的数组有三行和四个元素:

let myArray = [

[0, 1, 2, 3],

[4, 5, 6, 7],

[8, 9, 0, 0]

];

限制是,对于锯齿状数组,您无法指定固定的行和列。这意味着锯齿状数组可以有 m 行,每行具有不同数量的元素。

let myArray = [

[0, 1, 2, 3],

[4, 5, 6, 7],

[8, 9]

];

为什么在 JavaScript 中使用二维数组?

此时,您可能会问自己二维数组的重要性,特别是如果这是您第一次阅读有关二维数组的内容。

在 JavaScript 中,我们使用二维数组(也称为矩阵)以结构化和有组织的方式存储和操作数据。

它们允许高效存储和操作大量数据,例如图像或视频处理、科学模拟和电子表格应用程序。

二维数组还可以使用矩阵运算,例如矩阵乘法和转置,可以简化复杂的计算并使代码更具可读性。

二维数组可以表示线性代数中的数学矩阵和各种数据,例如图形、地图和表格。

二维数组常用于涉及数据表、图像处理和游戏开发的应用中。

如何访问 JavaScript 二维数组中的元素

在学习如何在 JavaScript 中创建 2D 数组之前,我们首先学习如何访问 2D 数组中的元素。

您可以使用两个索引访问二维数组的元素,一个用于行,一个用于列。假设您有以下二维数组:

let MathScore = [

['John Doe', 20, 60, 'A'],

['Jane Doe', 10, 52, 'B'],

['Petr Chess', 5, 24, 'F'],

['Ling Jess', 28, 43, 'A'],

['Ben Liard', 16, 51, 'B']

];

上面是一个锯齿状数组,其中每个元素保存学生的姓名、考试成绩、考试成绩和成绩。您可以使用行索引和列索引访问特定元素,如以下语法所示:

arrayName[rowIndex][columnIndex]

为了更好地理解这一点,让我们使用 将上面的二维数组转换为表格console.table(arrayName)。

注意:确保替换arrayName为二维数组的名称。就我而言,是的MathScore。

您将得到这样的输出,显示行索引和列索引。请记住,数组是零索引的,这意味着项目是从 0 而不是 1 引用的。

请注意,(index)列和行用于说明,指示内部数组的索引/索引。

您可以使用两个方括号来访问二维或多维数组的元素。第一个访问行,而第二个访问指定行中的元素。

console.log(MathScore[4][0]); // returns 'Ben Liard'

console.log(MathScore[2][1]); // returns 5

console.log(MathScore[1][3]); // returns 'B'

console.log(MathScore[2][2]); // returns 24

如何访问二维数组的第一个和最后一个元素

有时您可能需要查找二维数组的第一个和最后一个元素。您可以使用行和列的第一个和最后一个索引来执行此操作。

第一个元素的行索引和列索引始终为 0,这意味着您将使用arrayName[0][0],.

然而,最后一个元素的索引可能很棘手。例如,在上面的示例中,第一个元素是“John Doe”,最后一个元素是“B”:

console.log(MathScore[0][0]); // returns 'John Doe'

console.log(MathScore[MathScore.length-1][(MathScore[MathScore.length -1]).length - 1]); // returns 'B'

如何添加二维数组的所有元素

在某些情况下,二维数组的所有元素都可以是数字,因此您可能需要将它们加在一起并得到一位数字。您可以使用嵌套循环来完成此操作。您将首先循环遍历行,然后,对于每一行,循环遍历其元素。

let numberArr = [

[10, 20, 60],

[8, 10, 52],

[15, 5, 24],

[26, 28, 43],

[12, 16, 51]

];

var sum = 0;

numberArr.forEach((row) => {

row.forEach((element) => {

sum += element;

});

});

console.log("The sum of all elements in the array is:" + sum); // returns "The sum of all elements in the array is: 380"

如何在 JavaScript 中操作二维数组

您可以使用通用数组方法(如 pop、push、splice 等)像操作一维数组一样操作 2D 数组。

让我们首先学习如何向二维数组添加/插入新行和元素。

如何将元素插入二维数组

您可以使用 push() 和 unshift() 方法向二维数组添加一个或多个元素。

Push() 方法将元素添加到 2D 数组的末尾,而 unshift() 方法将元素添加到 2D 数组的开头。

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore.push(["Tom Right", 30, 32, "B"]);

MathScore.unshift(["Alice George", 28, 62, "A"]);

当您console.log()或console.table()数组时,您将看到新行已添加:

[

["Alice George", 28, 62, "A"],

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"],

["Tom Right", 30, 32, "B"]

]

您还可以向内部数组添加元素,但只推送到一个内部数组而不影响所有数组元素是错误的。这是因为二维数组的每个元素数组具有相同数量的元素。

MathScore[0].push("B");

您可以一次向所有元素数组添加元素,而不是影响一个数组元素:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore.forEach((score) => {

let totalScore = score[1] + score[2];

score.push(totalScore);

});

console.log(MathScore);

这将返回:

[

["John Doe", 20, 60, "A", 80],

["Jane Doe", 10, 52, "B", 62],

["Petr Chess", 5, 24, "F", 29],

["Ling Jess", 28, 43, "A", 71],

["Ben Liard", 16, 51, "B", 67]

]

您还可以使用unshift()在开头插入元素的方法和splice()在数组中间插入元素的方法:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore.splice(2, 0, ["Alice George", 28, 62, "A"]);

在上面,1是您想要插入新数组的位置(记住它是零索引),0因此它不会删除任何元素,然后第三个参数是要添加的数组。

这是输出:

[

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Alice George", 28, 62, "A"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

]

如何从二维数组中删除元素

pop()您还可以使用和方法从二维数组的开头和结尾删除元素shift()。push()这与和方法的工作方式类似unshift(),但这次您没有向方法添加任何参数。

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore.pop();

MathScore.shift();

当您console.log()或console.table()数组时,您将看到第一个和最后一个数组元素已被删除:

[

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

]

您还可以从每个数组元素中删除元素:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore.forEach((score) => {

score.pop();

});

console.log(MathScore);

这将返回:

[

["John Doe", 20, 60],

["Jane Doe", 10, 52],

["Petr Chess", 5, 24],

["Ling Jess", 28, 43],

["Ben Liard", 16, 51]

]

您还可以使用shift()方法删除开头的元素和splice()方法从特定位置删除数组元素:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore.splice(2, 1);

在上面的代码中,您从二维数组2的位置索引中删除了一项。MathScore这将输出:

[

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

]

注意:所有 JavaScript 数组方法都将对 2D 数组进行操作,因为它是数组的数组。您只需在调整 elements 数组中的各个元素时要小心即可。即使 JavaScript 中的二维数组并不严格,您也可以通过循环对所有元素进行类似的更改。

如何在 JavaScript 中创建二维数组

创建多维数组有两种选择。您可以使用数组文字表示法手动创建数组,该表示法使用方括号[]括起以逗号分隔的元素列表。您还可以使用嵌套循环。

如何使用数组文字创建二维数组

这就像我们一直在考虑使用以下语法的示例:

let arrayName = [

[ elements ],

[ elements ],

[ elements ], ... ];

例如,下面是一个二维数组,其中保存有关每个学生的数学分数和年级的信息:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

如何使用嵌套 for 循环创建二维数组

有很多方法可以做到这一点。但通常,您创建一个嵌套循环,其中第一个循环将循环遍历行,而第二个循环将循环遍历内部数组(列)中的元素:

let arr = [];

let rows = 4;

let columns = 3;

// creating two-dimensional array

for (let i = 0; i < rows; i++) {

arr[i] = [];

for (let j = 0; j < columns; j++) {

arr[i][j] = j;

}

}

console.log(arr);

在上面的代码中,您将首先循环遍历行。对于每一行,它将在声明并存储在变量中的原始数组中创建一个空数组arr。然后,您将创建一个嵌套循环来遍历列并添加单个元素。

在此示例中,使用了索引j并将输出:

[

[0, 1, 2],

[0, 1, 2],

[0, 1, 2],

[0, 1, 2]

]

您可以决定创建一个数字,用 0 初始化,然后在循环时增加,这样所有元素就不会具有相同的数字:

let arr = [];

let rows = 4;

let columns = 3;

let value = 0;

// creating two-dimensional array

for (let i = 0; i < rows; i++) {

arr[i] = [];

for (let j = 0; j < columns; j++) {

arr[i][j] = value++;

}

}

console.log(arr);

这将返回:

[

[0, 1, 2],

[3, 4, 5],

[6, 7, 8],

[9, 10, 11]

]

您还可以决定创建一个接受这些值作为参数的函数:

const create2Darr = (rows, columns) => {

let arr = [];

let value = 0;

// creating two-dimensional array

for (let i = 0; i < rows; i++) {

arr[i] = [];

for (let j = 0; j < columns; j++) {

arr[i][j] = value++;

}

}

console.log(arr);

};

let rows = 4;

let columns = 3;

create2Darr(rows, columns);

如何在 JavaScript 中更新二维数组中的元素

这与一维数组的处理方式非常相似,您可以通过使用索引分配另一个值来更新数组的值。

let array = [1, 2, 3];

array[1] = 5;

console.log(array); // returns [1, 5, 3]

您可以使用相同的方法来更改整行甚至单个元素:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore[1] = ["Alice George", 28, 62, "A"];

console.log(MathScore);

1这将用这个新数组替换索引的值:

[

["John Doe", 20, 60, "A"],

["Alice George", 28, 62, "A"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

]

您可以通过跟踪行索引和列索引并更新它们的值来更新单个元素:

let MathScore = [

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Petr Chess", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

];

MathScore[2][0] = "Jack Jim";

console.log(MathScore);

这会将索引行上的名称更改2为“Jack Jim”,如下所示:

[

["John Doe", 20, 60, "A"],

["Jane Doe", 10, 52, "B"],

["Jack Jim", 5, 24, "F"],

["Ling Jess", 28, 43, "A"],

["Ben Liard", 16, 51, "B"]

]

在本文中,您了解了二维数组是什么以及它们在 JavaScript 中的工作原理。重要的是要知道 JavaScript 中的二维数组的工作方式仍然与一维数组非常相似,因此请随意使用JavaScript 方法调整和操作它们。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OYYornMg3tGUrvCmA9K7yGwg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券