Advertisement
ucielsola

ShallowCopy y DeepCopy

Apr 18th, 2022
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         const productos = [
  2.             { nombre: "Nike", precio: "5000", stock: 20, disponible: true },
  3.             { nombre: "Fila", precio: "4000", stock: 10, disponible: true },
  4.         ];
  5.  
  6.         const carrito = [];
  7.  
  8.         function comprar(nombre, cantidad) {
  9.             // copia la referencia del objeto en el array original
  10.             // va a alterar al original
  11.             const prodElegido = productos.find((prod) => prod.nombre === nombre);
  12.             prodElegido.cantidad = cantidad;
  13.             delete prodElegido.stock;
  14.             delete prodElegido.disponible;
  15.  
  16.             carrito.push(prodElegido);
  17.             console.log("productos :", productos);
  18.             console.log("carrito :", carrito);
  19.         }
  20.  
  21.         function comprarOK(nombre, cantidad) {
  22.             // en una sola linea, convierto a string (JSON.sringify) el array,
  23.             // y lo vuelvo a reconvertir a array (JSON.parse)
  24.             // creando una copia independiente
  25.             const copiaIndep = JSON.parse(JSON.stringify(productos));
  26.  
  27.             const prodElegido = copiaIndep.find((prod) => prod.nombre === nombre);
  28.             prodElegido.cantidad = cantidad;
  29.             delete prodElegido.stock;
  30.             delete prodElegido.disponible;
  31.  
  32.             actualizarStock(nombre, cantidad);
  33.             carrito.push(prodElegido);
  34.  
  35.             console.log("productos :", productos);
  36.             console.log("carrito :", carrito);
  37.         }
  38.  
  39.         function actualizarStock(nombre, cantidad) {
  40.             let producto = productos.find((prod) => prod.nombre === nombre);
  41.             producto.stock = producto.stock - cantidad;
  42.             if (!producto.stock) producto.disponible = false;
  43.         }
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement