помощь с функцией и параметром if else

166
06 июля 2022, 17:00

Есть парковка, на ней определенное количество мест для легковых машин и для грузовых машин

Нужна функция определяющая есть ли свободное место для легковой либо грузовой машины, если таковая имеется то машина займет пустое место, если пустых мест нету то машины не заедут.

Нужно написать функция въезда (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 ) {
Answer 1

Предлагаю такую реализацию. При создании парковки передаём количество парковочных мест для типов машин.

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());

Answer 2

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))

READ ALSO
zoom-in эффект при прокрутке, эффект нужен для div

zoom-in эффект при прокрутке, эффект нужен для div

Ищу zoom-in эффект при прокрутке, аналог Эффект в секции з заголовком "REFORM CO"

167
правильно ли реализована данная асинхронная функция [закрыт]

правильно ли реализована данная асинхронная функция [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

160
WeakMap и HTMLElement в DOM

WeakMap и HTMLElement в DOM

Работа WeakMap понятна, но при попытке удалить узел из браузера в WeakMap этот же узел не удаляется

160
React добавление обработчика только что созданным элементам

React добавление обработчика только что созданным элементам

Как правильно навесить обработчик на элемент, который создается в хуках?

145