我正在尝试创建一个像这样的多维数组:
var minutes = [];
for (let i = 1; i < 10; i++) {
minutes.push(i);
}
var works = [{
startTime: 80000,
endTime: 150000
}, {
startTime: 200000,
endTime: 400000
}, {
startTime: 15000,
endTime: 80000
}, {
startTime: 300000,
endTime: 500000
}];
var sumTime = 0;
var tasksByTime = [];
works.forEach((work, i) => {
tasksByTime.push(i);
console.log(tasksByTime);
var difference = work.endTime - work.startTime;
minutes.forEach((time, j) => {
console.log(time * 60 * 1000, difference);
console.log(i, j);
if (difference > time * 60 * 1000) {
tasksByTime[i][j] = (work.id);
}
});
sumTime += difference;
});
console.log(tasksByTime);
我想做的是按照startTime
和endTime
之间的差异对对象进行排序。但是当我尝试控制台日志时,我得到:
TypeError:无法将属性0分配给3:不是对象
这是完整的日志:
Array [ 0 ]
NumbersPanel.js:35
60000 8498 NumbersPanel.js:40
0 0 NumbersPanel.js:41
120000 8498 NumbersPanel.js:40
0 1 NumbersPanel.js:41
180000 8498 NumbersPanel.js:40
0 2 NumbersPanel.js:41
240000 8498 NumbersPanel.js:40
0 3 NumbersPanel.js:41
300000 8498 NumbersPanel.js:40
0 4 NumbersPanel.js:41
360000 8498 NumbersPanel.js:40
0 5 NumbersPanel.js:41
420000 8498 NumbersPanel.js:40
0 6 NumbersPanel.js:41
480000 8498 NumbersPanel.js:40
0 7 NumbersPanel.js:41
540000 8498 NumbersPanel.js:40
0 8 NumbersPanel.js:41
Array [ [], 1 ]
NumbersPanel.js:35
60000 12580 NumbersPanel.js:40
1 0 NumbersPanel.js:41
120000 12580 NumbersPanel.js:40
1 1 NumbersPanel.js:41
180000 12580 NumbersPanel.js:40
1 2 NumbersPanel.js:41
240000 12580 NumbersPanel.js:40
1 3 NumbersPanel.js:41
300000 12580 NumbersPanel.js:40
1 4 NumbersPanel.js:41
360000 12580 NumbersPanel.js:40
1 5 NumbersPanel.js:41
420000 12580 NumbersPanel.js:40
1 6 NumbersPanel.js:41
480000 12580 NumbersPanel.js:40
1 7 NumbersPanel.js:41
540000 12580 NumbersPanel.js:40
1 8 NumbersPanel.js:41
Array(3) [ [], 1, 2 ]
NumbersPanel.js:35
60000 12366 NumbersPanel.js:40
2 0 NumbersPanel.js:41
120000 12366 NumbersPanel.js:40
2 1 NumbersPanel.js:41
180000 12366 NumbersPanel.js:40
2 2 NumbersPanel.js:41
240000 12366 NumbersPanel.js:40
2 3 NumbersPanel.js:41
300000 12366 NumbersPanel.js:40
2 4 NumbersPanel.js:41
360000 12366 NumbersPanel.js:40
2 5 NumbersPanel.js:41
420000 12366 NumbersPanel.js:40
2 6 NumbersPanel.js:41
480000 12366 NumbersPanel.js:40
2 7 NumbersPanel.js:41
540000 12366 NumbersPanel.js:40
2 8 NumbersPanel.js:41
Array(4) [ [], 1, 2, 3 ]
NumbersPanel.js:35
60000 66934 NumbersPanel.js:40
3 0
因此它可以进行第4次迭代。为什么会这样?
PS。很奇怪,但是当代码在浏览器中崩溃时,它却可以在代码段中运行
如果这很重要,我正在使用React。如果React在这里不是有效的标签,请删除它。
答案 0 :(得分:1)
每个人的最外层都有一个错误:您将taskByTime
的值推入i
-但是i
是Number
,而不是{{1} }!
因此,当您稍后执行Array
时,首先要检索taskByTime[i][j]
中i
中taskByTime
位置的元素,然后将其视为数组-因此不起作用。
要解决此问题,只需更改您的第一个Number
。不知道是否需要添加一个空数组:
push
或者如果您需要添加作品:
tasksByTime.push([]);
我认为从逻辑上讲,它应该同时适用于两者,可能其中一个要比另一个更有效