我尝试练习任务调度问题,但是我得到了一些提供此错误的javascript代码
script2.js:21 Uncaught TypeError:无法读取属性' D'未定义的(...)
代码:
var P = [100, 10, 15, 27, 36, 58, 62, 43, 52, 65];
var D = [3, 2, 5, 5, 4, 2, 2, 4, 3, 4]
var list = [];
for(var j in P){
list.push({'P':P[j],'D':D[j]});
}
list.sort(function(a,b){
return((a.P>b.P)? -1 :((a.P == b.P) ? 0:1));
});
for(var k = 0 ;k<list.length;k++){
P[k] = list[k].P;
D[k] = list[k].D;
}
list[k].D
此处仍有效。
var new_list =new Array(P.length);
new_list[0] = list[0];
for(var j = 1;j<=P.length;j++){
if(list[j].D>list[j-1].D){
new_list[j] = list[j];
}
else if(list[j-1].D<list[j-1].D){
new_list.unshift = list[j];
}
}
我收到了关于
的TypeError未捕获的TypeError:无法读取属性&#39; D&#39;未定义的
为什么不对?
答案 0 :(得分:1)
for(var j = 1; j <= P.length; j++)
会导致索引j
到达不存在的P.length
。因此,当您执行list[j].D
时,未定义D
。你应该在那里有严格的不平等,或者有P.length - 1
。