Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

100
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda