推送后未定义的数组

推送后未定义的数组

我试图获得从最高到最小的山脉排序,但是当尝试打印时,我得到

TypeError: mountainArray[i] is undefined


我认为我没有错过任何解决方案的步骤,但是我不确定。

提前致谢

代码如下:



var position;
var height;

function Mountain(position, height) {
  this.position = position;
  this.height = height;
}

function sortMountain(a, b) {
  return b.height - a.height;
}

var mountainArray = [];

// game loop
while (true) {
  for (var i = 0; i < 8; i++) {
    var mountainH = parseInt(readline()); // represents the height of one mountain, from 9 to 0.

    mountainArray.push(Mountain(i, mountainH));
    mountainArray.sort(sortMountain);


  }
  for (var i = 0; i < 8; i++) {
    print(mountainArray[i].position);
  }
}

最佳答案

您上课的方式:

function Mountain(position, height) {
  this.position = position;
  this.height = height;
}


按下时需要使用new关键字:

while (true) {
  for (var i = 0; i < 8; i++) {
    var mountainH = parseInt(readline()); // represents the height of one mountain, from 9 to 0.

    mountainArray.push(new Mountain(i, mountainH)); // HERE
    mountainArray.sort(sortMountain);


  }
  for (var i = 0; i < 8; i++) {
    print(mountainArray[i].position);
  }
}


正如评论中指出的那样,您应该只排序一次,而不必在循环中每次都进行排序。

关于javascript - 推送后未定义的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37377508/

10-12 04:59