Advertisement
ucielsola

Carrito Class

Apr 5th, 2022
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // un stock simple
  2. const stock = [
  3.     {
  4.         id: "1",
  5.         nombre: "prod 1",
  6.         precio: 123,
  7.     },
  8.     {
  9.         id: "2",
  10.         nombre: "prod 2",
  11.         precio: 123,
  12.     },
  13.     {
  14.         id: "3",
  15.         nombre: "prod 3",
  16.         precio: 123,
  17.     },
  18. ];
  19.  
  20. class Carrito {
  21.     constructor() {
  22.         this.lista = [];
  23.         this.total = 0;
  24.     }
  25.  
  26.     calcularTotal() {
  27.         let total = 0;
  28.         this.lista.forEach((p) => {
  29.             total = total + p.cantidad * p.precio;
  30.         });
  31.         this.total = total;
  32.     }
  33.  
  34.     listarProductos() {
  35.         console.table(this.lista);
  36.     }
  37.  
  38.     agregarProducto(id) {
  39.         const existeEnCarrito = this.lista.some((prod) => prod.id === id);
  40.         const productoSeleccionado = stock.find((p) => p.id === id);
  41.  
  42.         if (existeEnCarrito) {
  43.             console.log("Incrementando cantidad de producto");
  44.             // busco la posición del producto existente
  45.             const indexProducto = this.lista.findIndex((p) => p);
  46.  
  47.             // incremento el valor de la propiedad cantidad del producto
  48.             this.lista[indexProducto].cantidad++;
  49.  
  50.             // corto la ejecución de la función y actualizo el total del carrito
  51.             return this.calcularTotal();
  52.         }
  53.  
  54.         if (!productoSeleccionado) {
  55.             return console.log("producto no está en stock");
  56.         } else {
  57.             console.log("agregando producto al carrito");
  58.  
  59.             // agrego propiedad cantidad, la inicio en 1
  60.             productoSeleccionado.cantidad = 1;
  61.  
  62.             // agrego producto al carrito
  63.             this.lista.push(productoSeleccionado);
  64.  
  65.             // corto la ejecución de la función y actualizo el total del carrito
  66.             return this.calcularTotal();
  67.         }
  68.     }
  69.  
  70.     eliminarProducto(id) {
  71.         const indexProducto = this.lista.findIndex((p) => p.id === id);
  72.  
  73.         if (indexProducto === -1) {
  74.             // si el producto no existe en el carrito
  75.             console.log("El producto no está en el carrito");
  76.         } else {
  77.             // elimino producto seleccionado
  78.             this.lista.splice(indexProducto, 1);
  79.  
  80.             // calculo el nuevo total
  81.             return this.calcularTotal();
  82.         }
  83.     }
  84. }
  85.  
  86. const carrito = new Carrito();
  87.  
  88. carrito.agregarProducto("1"); // agrega uno
  89. carrito.agregarProducto("2"); // agrega otro
  90. carrito.agregarProducto("1"); // agrega repetido, incrementa cantidad
  91. carrito.agregarProducto("4"); // reporta producto inexistente
  92. carrito.agregarProducto("3"); // agrega otro distinto
  93. carrito.eliminarProducto("2"); // borra un producto
  94. carrito.eliminarProducto("8"); // reporta producto no está en carrito
  95. carrito.listarProductos(); // imprime tabla con contenido del carrito
  96. console.log(`El total es: ${carrito.total}`); // imprime total del carrito
  97.  
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement