用js写一个电梯调度方法
时间: 2024-02-01 16:03:30 浏览: 66
用Java写的电梯调度算法
4星 · 用户满意度95%
以下是一个简单的电梯调度方法的JavaScript代码:
```javascript
var Elevator = {
currentFloor: 1,
destinationFloor: 1,
direction: "up",
floorsToVisit: [],
goToFloor: function(floor) {
if (floor > this.currentFloor) {
this.direction = "up";
} else if (floor < this.currentFloor) {
this.direction = "down";
}
this.destinationFloor = floor;
this.floorsToVisit.push(floor);
this.floorsToVisit.sort(function(a, b) {
return a - b;
});
this.moveElevator();
},
moveElevator: function() {
var self = this;
var interval = setInterval(function() {
if (self.floorsToVisit.length > 0) {
var nextFloor = self.floorsToVisit[0];
if (self.currentFloor == nextFloor) {
self.floorsToVisit.shift();
if (self.floorsToVisit.length == 0) {
clearInterval(interval);
}
} else {
if (self.direction == "up") {
self.currentFloor++;
} else if (self.direction == "down") {
self.currentFloor--;
}
console.log("Elevator is at floor " + self.currentFloor);
}
} else {
clearInterval(interval);
}
}, 1000);
}
};
// 使用示例
Elevator.goToFloor(5);
Elevator.goToFloor(2);
Elevator.goToFloor(7);
```
这个方法包含一个 `Elevator` 对象,它有以下属性:
- `currentFloor`:当前电梯所在的楼层。
- `destinationFloor`:电梯当前要前往的楼层。
- `direction`:电梯当前的运动方向,可以是 "up" 或 "down"。
- `floorsToVisit`:一个数组,表示电梯需要停靠的楼层。
这个方法包含两个方法:
- `goToFloor(floor)`:将电梯移动到指定楼层。这个方法会将指定楼层加入 `floorsToVisit` 数组,并按照升序排序,然后调用 `moveElevator` 方法开始移动电梯。
- `moveElevator()`:移动电梯的主要方法。这个方法使用一个定时器,每秒钟检查一次电梯是否需要移动。如果 `floorsToVisit` 数组为空,则停止定时器。如果 `floorsToVisit` 数组不为空,则检查数组中的第一个元素,如果它与 `currentFloor` 相等,则将它从数组中移除;否则,根据 `direction` 属性将 `currentFloor` 增加或减少,并打印出当前电梯所在楼层的信息。
使用示例中,我们依次将电梯调度到 5 楼、2 楼和 7 楼。当调用 `goToFloor` 方法时,它会将指定楼层加入 `floorsToVisit` 数组,并按照升序排序,然后调用 `moveElevator` 方法开始移动电梯。`moveElevator` 方法会使用定时器每秒钟检查一次电梯是否需要移动,直到 `floorsToVisit` 数组为空为止。在移动电梯的过程中,它会输出当前电梯所在楼层的信息。
阅读全文