返回

JS 离谱到给离谱它妈开门之二维数组创建

前端

JS 中的二维数组创建:离谱且灵活

JS 中二维数组的创建与其他语言不同,这带来了一些独特的挑战和灵活性。让我们深入探讨这些差异,并了解如何在 JS 中创建和使用二维数组。

C/C++/Java 中的二维数组创建

在这些语言中,创建二维数组非常简单,比如在 C 中,你可以声明一个 10x10 的整数二维数组:

int arr[10][10];

在 Java 中,类似地可以声明一个 10x10 的二维数组:

int[][] arr = new int[10][10];

JS 中二维数组的创建

JS 中创建二维数组有两种方法:

方法 1:数组字面量

使用数组字面量创建二维数组,每个元素是一个数组,代表一行。例如,以下代码创建一个 3x3 的二维数组:

const arr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

方法 2:Array.from()

使用 Array.from() 方法创建二维数组,它接受一个长度参数和一个回调函数,回调函数返回每一行的元素。例如,以下代码创建一个 3x3 的二维数组,每个元素为 0:

const arr = Array.from({length: 3}, () => new Array(3).fill(0));

JS 中二维数组的离谱之处

JS 中二维数组的独特之处在于:

1. 动态长度: 每一行可以有不同的长度,例如:

const arr = [
  [1, 2, 3],
  [4, 5],
  [6, 7, 8, 9],
];

2. 稀疏数组: 二维数组可以包含未定义的元素,例如:

const arr = [
  [1, 2, 3],
  [, 5],
  [, , 8, 9],
];

3. 对象作为元素: 二维数组的元素可以是任何类型,包括对象,例如:

const arr = [
  [1, 2, 3],
  [{name: 'John', age: 30}],
  [true, false],
];

这些离谱之处为 JS 中的二维数组提供了更大的灵活性,允许创建复杂的结构。

使用 JS 中的二维数组

在 JS 中使用二维数组,可以使用以下方法:

  • 访问元素: 使用 arr[row][col] 访问元素,其中 row 是行索引,col 是列索引。
  • 遍历数组: 使用嵌套循环遍历每一行和每一列。
  • 更改元素: 直接赋值给 arr[row][col] 更改元素。
  • 获取行或列: 使用 arr[row] 获取行,使用 arr.map((row) => row[col]) 获取列。

常见问题解答

1. 如何创建不定长的二维数组?
使用数组字面量方法,每一行的长度可以不同。

2. 如何判断元素是否未定义?
使用 arr[row][col] === undefined 检查元素是否未定义。

3. 如何复制二维数组?
使用 Array.from(arr, (row) => [...row]) 浅复制二维数组。

4. 如何转置二维数组?
使用 Array.from({length: arr[0].length}, (_, col) => arr.map((row) => row[col])) 转置二维数组。

5. 如何排序二维数组?
使用 arr.sort((a, b) => a[col] - b[col]) 按照指定列对二维数组进行排序。

结论

JS 中二维数组的创建与其他语言不同,提供了一系列独特的挑战和灵活性。了解这些差异并掌握使用技巧对于高效地利用 JS 中的二维数组至关重要。通过灵活的使用二维数组,可以处理复杂的数据结构和操作。