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

154
Vistas
¿Cómo calcular la suma de números en una matriz de objetos profundamente anidados usando JavaScript?

Recién comencé a aprender JavaScript y me encontré con un problema de este tipo, tengo una matriz anidada, quiero resumir el valor del precio de estas matrices y devolver la suma existente, me pregunto qué método es aplicable para él, que no perjudica el rendimiento , necesito un ejemplo para entender la forma de resolver el problema. Gracias por adelantado

 const initialData = [ { title: 'm2212', data: [ { id: 98233181232, variations:[{ warranty: '', price: 120, comment: '', }] }, ] }, { title: 'm2', data: [ { id: 982812, variations:[{ warranty: '', price: 92, comment: '', }] }, { id: 92182812, variations:[{ warranty: '', price: 922, comment: '', }] }, ] }, ] //what i tried let sum = 0 initialData.forEach((el)=>{ el.data.forEach((el1)=>{ sum = sum + el1.variations[0].price }) }) console.log(sum);

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Su estructura de datos parece bastante simple, así que explicaré en un lenguaje sencillo cómo lograrlo:

La forma simple y directa es ignorar todas las cosas funcionales sofisticadas que puede hacer en las matrices, y simplemente hacer esto:

Establezca una variable de sum igual a 0. Repita cada elemento de initialData . En cada elemento, itere sobre cada elemento de data . En cada elemento data , itere sobre cada elemento de variations . Agregue la propiedad de price a su variable de sum .

about 4 years ago · Juan Pablo Isaza Denunciar

0

El enfoque más simple y eficaz sería algo como este código:

 const sum = initialData.reduce((sum, item) => { const itemSum = item.data.reduce((dataSum, dataItem) => { const itemDataSum = dataItem.variations.reduce((variantsSum, variantItem) => { return variantsSum + variantItem.price; }, 0); return dataSum + itemDataSum; }, 0); return sum + itemSum; }, 0); 

 const initialData = [ { title: "m2212", data: [ { id: 98233181232, variations: [ { warranty: "", price: 120, comment: "" } ] } ] }, { title: "m2", data: [ { id: 982812, variations: [ { warranty: "", price: 92, comment: "" } ] }, { id: 92182812, variations: [ { warranty: "", price: 922, comment: "" } ] } ] } ]; const sum = initialData.reduce((sum, item) => { const itemSum = item.data.reduce((dataSum, dataItem) => { const itemDataSum = dataItem.variations.reduce((variantsSum, variantItem) => { return variantsSum + variantItem.price; }, 0); return dataSum + itemDataSum; }, 0); return sum + itemSum; }, 0); console.log(sum);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede agregar algunas comprobaciones para tener una matriz u objeto y, de ser así, iterar los valores.

Este enfoque no necesita conocer la estructura de los datos, requiere una búsqueda en amplitud para encontrar la clave deseada.

 const sum = (value, key) => { if (!value || typeof value !== 'object') return 0; if (Array.isArray(value)) return value.reduce((t, o) => t + sum(o, key), 0); if (key in value) return value[key]; return sum(Object.values(value), key); }, data = [{ title: 'm2212', data: [{ id: 98233181232, variations: [{ warranty: '', price: 120, comment: '' }] }] }, { title: 'm2', data: [{ id: 982812, variations: [{ warranty: '', price: 92, comment: '' }] }, { id: 92182812, variations: [{ warranty: '', price: 922, comment: '' }] }] }]; console.log(sum(data, 'price'));

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