Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

101
Vistas
Problema de matriz anidada en JavaScript

tengo la siguiente matriz

 Array["MyArray", { "isLoaded":true, "items": [{ "id":"4", "name":"ProductA", "manufacturer":"BrandA", "quantity":1, "price":"25" },{ "id":"1", "name":"ProductB", "manufacturer":"BrandB", "quantity":5, "price":"20" }], "coupons":null } ]

Necesito cargar nombres de productos y su cantidad de la matriz.

 const result = [key, value].map((item) => `${item.name} x ${item.quantity}`);
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí hay una forma posible de lograr el resultado deseado:

 const getProductsAndQuantity = ([k , v] = arr) => ( v.items.map(it => `${it.name} x ${it.quantity}`) );

¿Cómo usarlo dentro del contexto de la pregunta?

 localforage.iterate(function(value, key, iterationNumber) { console.log([key, value]); const val2 = JSON.parse(value); if (val2 && val2.items && val2.items.length > 0) { console.log(val2.items.map(it => `${it.name} x ${it.quantity}`).join(', ')) }; });

¿Cómo funciona?

  1. Entre los parámetros enumerados en la pregunta, es decir, value, key, iterationNumber , solo se requiere value .
  2. El método anterior acepta el par clave-valor como una matriz (de 2 elementos) que coincide estrechamente con console.log([key, value]); en la pregunta
  3. Utiliza solo v (que es un objeto). En v , accede a los items con nombre de prop y estos items son una matriz.
  4. A continuación, .map se usa para iterar a través de la matriz y devolver el name y la quantity de cada producto en el formato deseado/esperado.

Pruébelo en un fragmento de código:

 const arr = [ "MyArray", { "isLoaded": true, "items": [{ "id": "4", "name": "ProductA", "manufacturer": "BrandA", "quantity": 1, "price": "25" }, { "id": "1", "name": "ProductB", "manufacturer": "BrandB", "quantity": 5, "price": "20" }], "coupons": null } ]; const getProductsAndQuantity = ([k, v] = arr) => ( v.items.map( it => `${it.name} x ${it.quantity}` ) ); console.log(getProductsAndQuantity());

about 4 years ago · Juan Pablo Isaza Denunciar

0

Entendí. Debe aprender sobre métodos de matriz como mapear, filtrar, reducir. Aquí tienes...

 const items = [{ "id":"4", "name":"ProductA", "manufacturer":"BrandA", "quantity":1, "price":"25" },{ "id":"1", "name":"ProductB", "manufacturer":"BrandB", "quantity":5, "price":"20" }]; const result = items.map((item) => `${item.name} x ${item.quantity}`); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que entiendo la pregunta para decir que la entrada es una matriz de objetos, cada uno de los cuales contiene una matriz de elementos. La clave es que una matriz anidada requiere un bucle anidado. Entonces, iteramos los objetos y sus elementos internos (vea las líneas comentadas //outer loop y // inner loop continuación)

Además, adivinando a medias por el contexto, parece que el OP apunta a armar una especie de factura para cada objeto. Primero, una demostración de eso (y vea a continuación la versión simplificada para exactamente lo que pide el OP) ...

 const addInvoice = obj => { let total = 0; // inner loop obj.invoice = obj.items.map(i => { let subtotal = i.quantity * i.price; total += subtotal return `name: ${i.name}, qty: ${i.quantity}, unit price: ${i.price}, subtotal: ${subtotal}` }); obj.invoice.push(`invoice total: ${total}`); } const objects = [{ "isLoaded": true, "items": [{ "id": "4", "name": "ProductA", "manufacturer": "BrandA", "quantity": 1, "price": "25" }, { "id": "1", "name": "ProductB", "manufacturer": "BrandB", "quantity": 5, "price": "20" }], "coupons": null }] // outer loop objects.forEach(addInvoice); console.log(objects);

Si mi conjetura sobre el objetivo fue demasiado, simplemente elimine el precio unitario, el subtotal y las líneas totales de la función de invoice ...

 const objects = [{ "isLoaded": true, "items": [{ "id": "4", "name": "ProductA", "manufacturer": "BrandA", "quantity": 1, "price": "25" }, { "id": "1", "name": "ProductB", "manufacturer": "BrandB", "quantity": 5, "price": "20" }], "coupons": null }] const summaryString = obj => { return obj.items.map(i => `${i.name}, ${i.quantity}`); } const strings = objects.map(summaryString); console.log(strings);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda