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