JavaScript的:
我正在尝试填充数组。
var blocks = [];
var blocksCount = 7;
for (var columnIndex = 0; columnIndex < blocksCount; columnIndex++) {
for (var rowIndex = 0; rowIndex < blocksCount; rowIndex++) {
blocks[columnIndex][rowIndex] = 'Some Value';
}
}
错误消息显示:undefined is not an object
!
我需要做些什么才能让它发挥作用?
答案 0 :(得分:3)
在尝试为该数组的属性赋值之前,必须将数组分配给bot.api.files.upload({},function(err,response) {
//Do something...
})
。
答案 1 :(得分:2)
blocks[columnIndex]
时,未定义 rowIndex
。您无法为尚未定义的内容分配值。因此,当columnIndex
尚未定义时,即第一次将blocks[columnIndex] = blocks[columnIndex] || [];
定义为空数组。你可以这样做,
var blocks = [];
var blocksCount = 7;
for (var columnIndex = 0; columnIndex < blocksCount; columnIndex++) {
blocks[columnIndex] = blocks[columnIndex] || [];
for (var rowIndex = 0; rowIndex < blocksCount; rowIndex++) {
blocks[columnIndex][rowIndex] = 'Some Value';
}
}
console.log(blocks);
https://regex101.com/r/1oC5R1/1
答案 2 :(得分:1)
目前,您没有多维数组。
var arr = [];
console.log(arr[0]);
将返回undefined
并且您正在尝试分配新元素。
您可以克服这个问题并在第一个for
循环语句中创建一个多维数组,并在原始blocks
数组中创建一个新数组。
blocks[columnIndex] = [];
然后,您可以将这两个值分配给多维数组。
var blocks = [];
var blocksCount = 7;
for (var columnIndex = 0; columnIndex < blocksCount; columnIndex++) {
blocks[columnIndex] = [];
for (var rowIndex = 0; rowIndex < blocksCount; rowIndex++) {
blocks[columnIndex][rowIndex] = 'Some Value';
console.log(blocks[columnIndex][rowIndex]);
}
}
答案 3 :(得分:0)
您可以使用from
的{{1}}构造函数将函数传递给数组创建。这意味着不需要Array
循环:)
for