Básicamente este es mi archivo Json:
[ { "id": 9, "nombre": "ProductoDeJson4", "precio": 15000, "stock": 0, "img": "" }, { "id": 10, "nombre": "ProductoDeJson5", "precio": 15000, "stock": 0, "img": "" } ]Esta es mi clase:
class Producto { constructor(id, nombre, precio, stock) { this.id = id; this.nombre = nombre; this.precio = precio; this.stock = stock; } sumaIVA() { this.precio *= 1.21; } aumentarPrecio() { if (aumentoPrecios < 1) { this.precio = this.precio * aumentoPrecios + this.precio; } else { this.precio *= aumentoPrecios; } } }Y quiero hacer esto dinámicamente con los datos de mi Json. Porque quiero aplicar la función "aumentarPrecio()" a cada uno.
const producto1 = new Producto(1, "Grasa", 400, 1); const producto2 = new Producto(2, "Desengrasante", 1000, 1); const productos = [ producto1, producto2, ];En este momento estoy tratando de hacerlo así, pero no funciona. El nuevo Producto se está creando pero las funciones de la clase no funcionan. Creo que es porque no estoy creando una nueva constante para cada elemento del Json. Pero no sé cómo hacerlo dinámicamente.
async function obtenerProductos() { const response = await fetch("productos.json"); return await response.json(); } let arrayProductos = obtenerProductos(); //Agrego productos del JSON al array de productos (falta agregarle los métodos o transformar cada uno en un new Producto) arrayProductos.then((el) => { console.log(el); el.forEach((el) => { console.log(el["nombre"]); const productosJson = new Producto( el["id"], el["nombre"], el["precio"], el["stock"] ); productos.push(productosJson); console.log("elemento pusheado"); }); }); //Método Aumentar precio productos, luego de tener los productos listos en el array productos.forEach((listaProductos) => { setTimeout(() => { listaProductos.aumentarPrecio(); console.log("precios aumentados"); }, 1000); });Por favor ayúdame, jaja. ¡Gracias!
Estás tratando de crear objetos dinámicamente dentro de un bucle, por lo que puedo decir.
Este enlace puede ser lo que estás buscando.
Tldr:
i y extraiga los datos para el objeto actualobjects[i] = new Producto(1, "Grasa", 400, 1); (Cuidado aquí, ya que no le está dando ningún nombre a sus objetos, serán llamados por object[i].function )object[i].aumentarPrecio() En otra nota: probablemente no debería declarar los objetos como const en su código y podría chocar con su declaración fuera de clase de aumentoPrecios .