JSFiddle - React, Tailwind, and code Playground

by Chelo Quilón

JavaScript

class vendor{
	constructor(){
  	this.items = new Map();    
  }
  //Regargar un artículo
  rechargeItem(code,num){
  	this.items.has(code) && num>0?this.items.get(code).num+=num:undefined;
  }  	
  	
  // Añadir nuevo elemento
  addNewItem(item){
  	if(item.code && item.description && item.price && item.num && !this.items.has(item.code)){
      this.items.set(item.code,{
          description: item.description,
          price: item.price,
          num: item.num
        });
      console.log("INFO. Producto insertado correctamente");
     }else{
     	console.log("ERROR: faltan parámetros para insertar el producto");
     }
  }
  
  // Retorna el precio
  getPrice(code){
  	return (code?this.items.has(code):null)?this.items.get(code).price:undefined;
  }
  // Coger un elemento (tendrá que restar 1 al elemento dado)
  getItem(code, coins){
  	let price = this.getPrice(code); 
    if (price<=coins && this.items.get(code).num>0){
    	this.items.get(code).num -=1;
      return Math.round((price-coins)*100)/100; 
    }else{
    	price?console.log("Te faltan:", Math.round((price-coins)*100)/100, "€ para el producto seleccionado"):undefined;
      return false;
    }
  }
  
  // Información de la máquina
  info(){
  	this.items.forEach(function(value, key, ownerMap){
    	console.log(key,":",value);
    });
  }
}

let machineOne = new vendor();
machineOne.addNewItem({code: "A01", description: "kit-kat", price: 2, num: 20});
machineOne.addNewItem({code: "A02", description: "Chips", price: 2.4, num: 20});
console.log(machineOne.getItem("A02",1.5));
machineOne.info();
console.log(machineOne.getPrice("A21"));
console.log(machineOne.rechargeItem("A02",5));
machineOne.info();