JS 离谱到给离谱它妈开门之二维数组创建
2023-11-29 03:53:14
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 中的二维数组至关重要。通过灵活的使用二维数组,可以处理复杂的数据结构和操作。