Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // un stock simple
- const stock = [
- {
- id: "1",
- nombre: "prod 1",
- precio: 123,
- },
- {
- id: "2",
- nombre: "prod 2",
- precio: 123,
- },
- {
- id: "3",
- nombre: "prod 3",
- precio: 123,
- },
- ];
- class Carrito {
- constructor() {
- this.lista = [];
- this.total = 0;
- }
- calcularTotal() {
- let total = 0;
- this.lista.forEach((p) => {
- total = total + p.cantidad * p.precio;
- });
- this.total = total;
- }
- listarProductos() {
- console.table(this.lista);
- }
- agregarProducto(id) {
- const existeEnCarrito = this.lista.some((prod) => prod.id === id);
- const productoSeleccionado = stock.find((p) => p.id === id);
- if (existeEnCarrito) {
- console.log("Incrementando cantidad de producto");
- // busco la posición del producto existente
- const indexProducto = this.lista.findIndex((p) => p);
- // incremento el valor de la propiedad cantidad del producto
- this.lista[indexProducto].cantidad++;
- // corto la ejecución de la función y actualizo el total del carrito
- return this.calcularTotal();
- }
- if (!productoSeleccionado) {
- return console.log("producto no está en stock");
- } else {
- console.log("agregando producto al carrito");
- // agrego propiedad cantidad, la inicio en 1
- productoSeleccionado.cantidad = 1;
- // agrego producto al carrito
- this.lista.push(productoSeleccionado);
- // corto la ejecución de la función y actualizo el total del carrito
- return this.calcularTotal();
- }
- }
- eliminarProducto(id) {
- const indexProducto = this.lista.findIndex((p) => p.id === id);
- if (indexProducto === -1) {
- // si el producto no existe en el carrito
- console.log("El producto no está en el carrito");
- } else {
- // elimino producto seleccionado
- this.lista.splice(indexProducto, 1);
- // calculo el nuevo total
- return this.calcularTotal();
- }
- }
- }
- const carrito = new Carrito();
- carrito.agregarProducto("1"); // agrega uno
- carrito.agregarProducto("2"); // agrega otro
- carrito.agregarProducto("1"); // agrega repetido, incrementa cantidad
- carrito.agregarProducto("4"); // reporta producto inexistente
- carrito.agregarProducto("3"); // agrega otro distinto
- carrito.eliminarProducto("2"); // borra un producto
- carrito.eliminarProducto("8"); // reporta producto no está en carrito
- carrito.listarProductos(); // imprime tabla con contenido del carrito
- console.log(`El total es: ${carrito.total}`); // imprime total del carrito
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement