问题描述
嗨,我正在尝试在JS中定义2D数组,但似乎有两个错误阻止了我,而且我不确定我要去哪里。 i 仅来自for循环-已定义。即使我将 i 替换为 0 ,也会发生相同的错误。 我的代码:
let leds[i][i] = randint(0,10);
这会导致错误:
'='预期。
但是删除 let :
leds[i][i] = randint(0,10);
类型'number'不能分配给类型'undefined'。
我正在使用BBC Microbit的JS编辑器。 预先感谢。
解决方法
首先,从技术上讲,JavaScript中没有2D数组之类的东西。您正在使用的只是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)]
0: (10) [0,0]
1: (10) [0,0]
2: (10) [0,0]
3: (10) [0,0]
4: (10) [0,0]
5: (10) [0,0]
6: (10) [0,0]
7: (10) [0,0]
8: (10) [0,0]
9: (10) [0,0]
length: 10
__proto__: Array(0)
最后,有了数组后,您可以按索引获取/分配值:
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,3];
leds.push([]);
leds[1] = [4,5,6];
leds.push([7,8,9]);
//change an array value
leds[1][1] = 0;
console.log(leds);