Javascript can';t分配给y上的属性x:不是对象-多维数组

Javascript can';t分配给y上的属性x:不是对象-多维数组,javascript,arrays,sorting,Javascript,Arrays,Sorting,我正在尝试创建一个多维数组,如下所示: var分钟=[]; for(设i=1;i{ tasksByTime.push(i); console.log(tasksByTime); 变量差异=work.endTime-work.startTime; 每小时分钟数((时间,j)=>{ 控制台日志(时间*60*1000,差异); 控制台日志(i,j); 如果(差异>时间*60*1000){ tasksByTime[i][j]=(work.id); } }); sumTime+=差异; }); cons

我正在尝试创建一个多维数组,如下所示:

var分钟=[];
for(设i=1;i<10;i++){
分钟。推(i);
}
var works=[{
开始时间:80000,
结束时间:150000
}, {
开始时间:200000,
结束时间:40万
}, {
开始时间:15000,
结束时间:80000
}, {
开始时间:30万,
结束时间:50万
}];
var-sumTime=0;
var tasksByTime=[];
works.forEach((work,i)=>{
tasksByTime.push(i);
console.log(tasksByTime);
变量差异=work.endTime-work.startTime;
每小时分钟数((时间,j)=>{
控制台日志(时间*60*1000,差异);
控制台日志(i,j);
如果(差异>时间*60*1000){
tasksByTime[i][j]=(work.id);
}
});
sumTime+=差异;
});

console.log(tasksByTime)
在您最外层的forEach中有一个bug:您正在按时间将
i
的值推入
taskByTime
-但是
i
是一个
数字,而不是一个
数组

因此,当您稍后执行
taskByTime[i][j]
时,首先要检索
taskByTime
i
位置的元素,它是一个
数字,然后将其视为一个数组,这样它就不起作用了

要修复它,只需更改您的第一个
按钮
。不确定是否需要添加空数组:

tasksByTime.push([]);
或者,如果您需要添加工作:

tasksByTime.push(work);

我认为从逻辑上讲,它应该同时适用于这两种情况,可能是其中一种比另一种性能稍高一些

在您最外层的forEach中有一个bug:您正在按时间推进
任务
I
的值,但是
I
是一个
数字,而不是
数组

因此,当您稍后执行
taskByTime[i][j]
时,首先要检索
taskByTime
i
位置的元素,它是一个
数字,然后将其视为一个数组,这样它就不起作用了

要修复它,只需更改您的第一个
按钮
。不确定是否需要添加空数组:

tasksByTime.push([]);
或者,如果您需要添加工作:

tasksByTime.push(work);

我认为从逻辑上讲,这两种方法都应该适用,可能是一种方法比另一种方法性能稍好

请在
工作
数组中添加所需结果的示例。请在
工作
数组中添加所需结果的示例。这很容易混淆。谢谢大家!@我仍然认为有一个更优雅的解决方案。你能举个例子吗?因此,我可以更新我的答案以满足您的要求。。因为您提供的代码没有提供您在我的答案下面的注释中显示的结构,我想看看它应该是什么样子。@trixn Onesecond@trixn事实上,我现在甚至还没有形成完整的逻辑。谢谢你的帮助,这让人困惑。谢谢大家!@我仍然认为有一个更优雅的解决方案。你能举个例子吗?因此,我可以更新我的答案以满足您的要求。。因为您提供的代码没有提供您在我的答案下面的注释中显示的结构,我想看看它应该是什么样子。@trixn Onesecond@trixn事实上,我现在甚至还没有形成完整的逻辑。谢谢你的帮助