Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 推后未定义数组_Javascript_Arrays_Undefined - Fatal编程技术网

Javascript 推后未定义数组

Javascript 推后未定义数组,javascript,arrays,undefined,Javascript,Arrays,Undefined,我试图从最高的山到最小的山排序,但是当我试图打印时,我得到了 TypeError: mountainArray[i] is undefined 我想我没有错过解决方案的任何步骤,但我没有定义 提前谢谢 代码如下: var位置; 变异高度; 功能山(位置、高度){ 这个位置=位置; 高度=高度; } 功能sortMountain(a、b){ 返回b.高度-a.高度; } var mountainArray=[]; //游戏循环 while(true){ 对于(变量i=0;i

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

TypeError: mountainArray[i] is undefined
我想我没有错过解决方案的任何步骤,但我没有定义

提前谢谢

代码如下:

var位置;
变异高度;
功能山(位置、高度){
这个位置=位置;
高度=高度;
}
功能sortMountain(a、b){
返回b.高度-a.高度;
}
var mountainArray=[];
//游戏循环
while(true){
对于(变量i=0;i<8;i++){
var mountainH=parseInt(readline());//表示一座山的高度,从9到0。
山体阵列。推(山体(i,山体));
mountainArray.sort(sortMountain);
}
对于(变量i=0;i<8;i++){
打印(mountainArray[i].位置);
}

}
您编写课程的方式:

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);
  }
}
while(true){
对于(变量i=0;i<8;i++){
var mountainH=parseInt(readline());//表示一座山的高度,从9到0。
mountainArray.push(新山(i,mountainH));//这里
mountainArray.sort(sortMountain);
}
对于(变量i=0;i<8;i++){
打印(mountainArray[i].位置);
}
}

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

之前会调用readline。该问题缺少mountainArray.push(新山(i,mountainH))中的新部分;似乎我需要从Scratch学习JS,也应该只对数组排序一次…而不是每次循环都要注意,虽然代码正确地修复了错误,但文本有点不正确<代码>新建与推送无关。您需要
new
,因为在
Mountain
中有一个普通的构造函数,如果不与
new
一起使用,它不会返回任何内容。如果您选择以不同的方式编写
Mountain
,则可以在不使用
new
的情况下使用
push
。^^^^^^我把它放在那里,就在您的评论之前。谢谢,够了。值得注意的是,有些人发现JS的
新的
(和
这个
)可怕的特性。我不是他们中的一员,但我很同情他们。