定义二维数组 Javascript

Defining 2D array Javascript

您好,我正在尝试在 JS 中定义一个二维数组,但我似乎遇到了两个错误阻止我,我不确定我哪里出错了。 i 只是来自 for 循环 - 它已被定义。即使我用 0 替换 i 也会发生同样的错误。 我的代码:

let leds[i][i] = randint(0, 10);

这会导致错误:

'=' expected.

但是删除 :

leds[i][i] = randint(0, 10);

导致不同的错误:

Type 'number' is not assignable to type 'undefined'.

我正在为 BBC Microbit 使用 JS 编辑器。 提前致谢。

首先,从技术上讲,javascript 中没有二维数组这样的东西。您正在使用的只是数组中的一个数组。

例如,您可以创建 4X4 数组,例如:

>>> const array = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
]
>>> array[1][1]
6

所以在你的情况下,你需要创建一个空的多维数组,只有你可以赋值。

有一个创建 10x10 数组的快捷方式,默认值为 0

>>> const a = new Array(10).fill(new Array(10).fill(0))
>>> a
(10) [Array(10), Array(10), Array(10), Array(10), Array(10), Array(10), Array(10), Array(10), Array(10), Array(10)]
0: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
3: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
5: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
6: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
7: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
8: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
9: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
length: 10
__proto__: Array(0)

最后当你有了你的数组时,你可以 get/assign 按索引的值:

a[9][9] = 10
10
a[9][9]
10

变量leds需要先定义为数组,才能作为数组使用。然后你可以使用 push 方法向它添加元素;这些元素可以是其他(嵌套)数组。例如:

//set leds as an empty array
let leds = [];

//add to the array
leds.push([]);
leds[0] = [1,2,3];

leds.push([]);
leds[1] = [4,5,6];

leds.push([7,8,9]);

//change an array value
leds[1][1] = 0;

console.log(leds);