我是JS的新手,请怜悯!我正在尝试实现一些代码,但我遇到了一个问题。
var edges = [{src: 3, dst: 61}, {src: 46, dst: 40}, {src: 63, dst: 65}, {src: 1, dst: 50}];
var G = [];
var min = 0;
var mini = 0;
var v;
var m = 99;
var n = edges.length;
for (i = 0; i < m; i++) {
G[i] = [];
}
n = edges.length;
for (i = 0; i < m; i++) {
G[i].push({
l: Infinity,
previous: undefined
})
for (j = 0; j < n; j++) {
if ( edges[j].src == i ) {
G[i].push( edges[j].dst );
G[i].sort();
}
}
G[i].unshift(i);
}
var Q = G;
var u = [];
u = Q[0];
var alt;
Q[0].l = 0;
while ( ( Q.length ) != 0 ) {
for ( k = 0; k < m ; k++ ) {
if ( Q[k].l < min ) {
mini = Q[k][0];
u = Q[mini];
}
}
Q.splice(mini, 1);
m--;
for (i = 1; i < ( u.length ) ; i++) {
alt = u.l + 1;
v = u[i];
for( j = 0; j < m; j++) {
if(Q[j][0] == v) {
console.log(v);
console.log(Q[j].l);
v = j;
console.log(v);
}
}
if ( alt < Q[v].l ){
Q[v].l = alt;
Q[v].previous = u;
}
}
mini = 0;
}
这里,我在第52行得到一个错误,它表示“无法读取第55行中未定义的属性'l'”。默认情况下,值“l”应为99999999999999999999,然而,此消失。我已经上了一个小时了,你能帮忙吗?为什么我会收到未定义的错误?
答案 0 :(得分:0)
我发现如果我正在使用
G[i].push({
l: Infinity,
previous: undefined
})
G[i].l
无法访问“l”或“previous”,因此未定义。相反,我可以G[i][j]["l"]
访问它,因为
{
l: Infinity,
previous: undefined
}
本身就是一个元素,我必须访问它的元素。