javascript - 推送后未定义的数组

标签 javascript arrays undefined

我正在尝试从最高到最小对一组山进行排序,但是在尝试打印时,我得到了

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);
  }
}

最佳答案

您编写类(class)的方式:

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/

相关文章:

javascript - 无法在 json 对象内部找到

R 扩展函数(选择的未定义列中出现错误)

angular - 等待订阅完成

javascript - 为什么我得到一个 "Uncaught ReferenceError: $ is not defined (anonymous function)"

javascript - “d3.nest()”无法读取未定义的属性

javascript - 您如何查看 PDF 中嵌入的 JavaScript?

c++ - 如何检查 double 的未定义值?

javascript - 如何在不刷新页面的情况下重新初始化同一页面中的数据表

java - 如何在 Java 中将正则表达式与 String.matches 一起使用

java - 在 JSON 数组中查找 JSON 对象