简体   繁体   English

纯JavaScript-数组值未定义

[英]Pure JavaScript - Array value gets undefined

I'm new to JS, please be merciful! 我是JS新手,请多多关照! I'm trying to implement some code, but I've run into a problem. 我正在尝试实现一些代码,但是遇到了问题。

 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 = ul + 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; } 

Here, I get an error in line 52, and it states that "Cannot read property 'l' of undefined in line 55". 在这里,我在第52行出现错误,它指出“无法读取第55行未定义的属性'l'”。 The value 'l' should be 99999999999999999999 by default, and yet, this disappears. 默认情况下,值“ l”应为99999999999999999999,但该值将消失。 I've been onto this for an hour, could you please help? 我已经研究了一个小时,请您能帮忙吗? Why do I get the undefined error? 为什么会出现未定义的错误?

I've found that if I'm using 我发现如果我正在使用

G[i].push({ 
    l: Infinity, 
    previous: undefined 
  })

it is not possible to access 'l' or 'previous' by G[i].l , and thus, it is undefined. G[i].l不能访问“ l”或“ previous”,因此它是未定义的。 Instead I can access it by G[i][j]["l"] , since 相反,我可以通过G[i][j]["l"]来访问它,因为

{ 
  l: Infinity, 
  previous: undefined 
}

is an element on its own, and I have to access its elements. 是一个元素,我必须访问它的元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM