Javascript 我的电梯数量有什么问题?
这是我的专栏课,我在第二段中称我的电梯数量:Javascript 我的电梯数量有什么问题?,javascript,Javascript,这是我的专栏课,我在第二段中称我的电梯数量: class Column { constructor(floorsNumber, elevatorsNumber) { this.floorsNumber = floorsNumber; this.elevatorsNumber = elevatorsNumber; this.elevatorsList = []; this.directionButtonsList = []; // Number o
class Column {
constructor(floorsNumber, elevatorsNumber) {
this.floorsNumber = floorsNumber;
this.elevatorsNumber = elevatorsNumber;
this.elevatorsList = [];
this.directionButtonsList = [];
// Number of elevators
for (let i = 0; i < elevatorsNumber; i++) {
this.elevatorsList.push(new Elevator(0, floorsNumber));
}
for (let i = 0; i < this.floorsNumber; i++) {
// floor1 has no DOWN direction button
if (i === 1) {
this.directionButtonsList.push(new DirectionButton(i, "up", false));
}
// floor10 has no UP direction button
else if (i === 10) {
this.directionButtonsList.push(new DirectionButton(i, "down", false));
}
// The rest has both directions
else {
this.directionButtonsList.push(new DirectionButton(i, "up", false));
this.directionButtonsList.push(new DirectionButton(i, "down", false));
}
}
}
}
情景1()`
我的问题是为什么场景不是调用我的电梯[0],而是调用[1]。当0明显比电梯1更接近时…据我所知,这是因为这种情况:
else if (this.elevatorsList[i].status == "idle") {
bestElevator = this.elevatorsList[i];
}
对于For循环的每次迭代,代码将按顺序运行if/else语句。因此,在i==0时,电梯不会向上移动,因此,如果忽略条件。电梯没有向下移动,因此,如果忽略条件,则会发生其他情况。电梯处于空闲状态,因此如果条件为运行,则为else,并且BEST电梯设置为该索引,并且for循环比较距离未运行
我想如果你想在调用空闲电梯之前检查是否有移动电梯,你必须在整个阵列中寻找移动电梯,如果没有找到,然后运行一个循环比较空闲电梯。据我所知,这是因为以下情况:
else if (this.elevatorsList[i].status == "idle") {
bestElevator = this.elevatorsList[i];
}
对于For循环的每次迭代,代码将按顺序运行if/else语句。因此,在i==0时,电梯不会向上移动,因此,如果忽略条件。电梯没有向下移动,因此,如果忽略条件,则会发生其他情况。电梯处于空闲状态,因此如果条件为运行,则为else,并且BEST电梯设置为该索引,并且for循环比较距离未运行
我认为如果你想在调用空闲电梯之前检查是否有移动的电梯,你必须在整个数组中寻找移动的电梯,如果没有找到,那么运行一个循环来比较空闲的电梯
else if (this.elevatorsList[i].status == "idle") {
bestElevator = this.elevatorsList[i];
}