Есть парковка, на ней определенное количество мест для легковых машин и для грузовых машин
Нужна функция определяющая есть ли свободное место для легковой либо грузовой машины, если таковая имеется то машина займет пустое место, если пустых мест нету то машины не заедут.
Нужно написать функция въезда (entry), которая принимает тип машин, если свободных мест нету возвращает false, если есть true
function parking(cars, trucks) {
this.cars = cars;
this.trucks = trucks;
}
var a = new parking(10, 5);
console.log(a);
function entry ( empty ) {
Предлагаю такую реализацию. При создании парковки передаём количество парковочных мест для типов машин.
class Car {
constructor () {
}
}
class Truck {
constructor () {
}
}
class Parking {
/**
* @param {number} car_limit Ограничения парковки для легковых машин
* @param {number} truck_limit Ограничения парковки для грузовых машин
*/
constructor(car_limit, truck_limit) {
this.cars = [];
this.trucks = [];
this.car_limit = car_limit;
this.truck_limit = truck_limit;
}
/**
* Добавляем машину
*
* Машина въехала на парковку
*/
addCars(car) {
this.cars.push(car);
return this;
}
/**
*
* @param {Truck} truck
*/
addTrucks(truck) {
this.trucks.push(truck);
return this;
}
isFreeByCars() {
return this.cars.length <= this.car_limit;
}
isFreeByTrucks() {
return this.trucks.length <= this.truck_limit;
}
canCarParking() {
return this.isFreeByCars();
}
canTruckParking() {
return this.isFreeByTrucks();
}
canAnyParking() {
return this.canCarParking() || this.canTruckParking;
}
}
// Экземпляр парковки
const parrking= new Parking(3, 3);
// Экземпляры машин
const car = new Car();
const truck = new Truck();
console.log('Свободна ли парковка для легковых машин? ',
parrking
.addCars(car)
.addCars(new Car())
.isFreeByCars()
);
console.log('Свободна ли парковка для грузовых машин? ',
parrking
.addTrucks(truck)
.addTrucks(new Truck())
.addTrucks(new Truck())
.addTrucks(new Truck())
.isFreeByTrucks()
);
console.log('А есть свободные места, любые ... мне нужно...', parrking.canAnyParking());
function Parking(cars, trucks) {
this.cars = cars;
this.trucks = trucks;
}
//создание парковки, в которой 10 легковых и 5 грузовых мест
var parking = new Parking(10, 5);
Parking.prototype.entry = function ( type, quantity ) {
return quantity <= this[type] ? true : false
}
console.log(parking.entry('trucks',1))
console.log(parking.entry('trucks',6))
console.log(parking.entry('cars',15))
console.log(parking.entry('cars',10))
На всякий случай оставлю более простой способ функции entry
Parking.prototype.entry = function ( type, quantity ) {
if(quantity <= this[type])
return true
else
return false
}
Но, учитывая, что у вас ООП подход, нужно записывать функции в prototype
, таким образом она будет доступна для экземпляра класса, тоесть созданного объекта, а не писать просто функцию которая будет доступна для всех.
Или использовать новый синтаксис классов
class Parking {
constructor(cars, trucks) {
this.cars = cars;
this.trucks = trucks;
}
entry = function ( type, quantity ) {
return quantity <= this[type] ? true : false
}
}
var parking = new Parking(10, 5);
console.log(parking.entry('trucks',1))
console.log(parking.entry('trucks',6))
console.log(parking.entry('cars',15))
console.log(parking.entry('cars',10))
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ищу zoom-in эффект при прокрутке, аналог Эффект в секции з заголовком "REFORM CO"
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
Работа WeakMap понятна, но при попытке удалить узел из браузера в WeakMap этот же узел не удаляется
Как правильно навесить обработчик на элемент, который создается в хуках?