1

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

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

这会导致错误:

'=' 预期。

但是删除let

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

导致不同的错误:

类型“数字”不可分配给类型“未定义”。

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

4

2 回答 2

2

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

例如,您可以创建 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)

最后,当您拥有数组时,您可以通过索引获取/分配值:

a[9][9] = 10
10
a[9][9]
10
于 2020-10-29T10:38:14.980 回答
1

该变量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);

于 2020-10-29T10:42:36.057 回答