未捕获的TypeError:无法读取属性' D'未定义的

时间:2016-12-11 16:55:32

标签: javascript

我尝试练习任务调度问题,但是我得到了一些提供此错误的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;未定义的

为什么不对?

1 个答案:

答案 0 :(得分:1)

for(var j = 1; j <= P.length; j++)会导致索引j到达不存在的P.length。因此,当您执行list[j].D时,未定义D。你应该在那里有严格的不平等,或者有P.length - 1