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的新的
(和这个
)可怕的特性。我不是他们中的一员,但我很同情他们。