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

175
Vistas
Accede a la suma de múltiples arreglos en React
const App = () => { const course = [{ id: 1, name: 'Half Stack application development', parts: [ { name: 'Fundamentals of React', exercises: 10, id: 1 }, { name: 'Using props to pass data', exercises: 7, id: 2 }, { name: 'State of a component', exercises: 14, id: 3 } ] }, { name: 'Node.js', id: 2, parts: [ { name: 'Routing', exercises: 3, id: 1 }, { name: 'Middlewares', exercises: 7, id: 2 } ] } ]

Estoy tratando de calcular la suma de los ejercicios en cada uno de los cursos para poder obtener algo al final de cada curso que dice Total de ejercicios: 31 al final de Half Stack Application Development y total de ejercicios 10: al final de Node .js

Yo he tratado

 const totals = course.map(c => c.parts.map(c => c.exercises.map(c => c.reduce((a, b) => a + b, 0))))

pero recibido c.exercises.map no es una función.

¿Cómo podría calcular la suma de cada uno de c.ejercicios?

ejercicios se ve así en la consola:

 (2) [Array(3), Array(2)] 0: (3) [10, 7, 14] 1: (2) [3, 7] length: 2
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Esto para calcular solo la cantidad de ejercicios por curso.

 const calculateTotalExercises = course => course.map(c => c.parts.reduce((res, { exercises }) => res + exercises, 0)) const course = [{ id: 1, name: 'Half Stack application development', parts: [{ name: 'Fundamentals of React', exercises: 10, id: 1 }, { name: 'Using props to pass data', exercises: 7, id: 2 }, { name: 'State of a component', exercises: 14, id: 3 } ] }, { name: 'Node.js', id: 2, parts: [{ name: 'Routing', exercises: 3, id: 1 }, { name: 'Middlewares', exercises: 7, id: 2 } ] } ] console.log(calculateTotalExercises(course))

Probablemente será más conveniente agregar el total del ejercicio a la matriz de esta manera

 const calculateTotalExercises = course => course.map(c => ({...c, totalExercise : c.parts.reduce((res, p) => res + p.exercises, 0)})) const course = [{ id: 1, name: 'Half Stack application development', parts: [{ name: 'Fundamentals of React', exercises: 10, id: 1 }, { name: 'Using props to pass data', exercises: 7, id: 2 }, { name: 'State of a component', exercises: 14, id: 3 } ] }, { name: 'Node.js', id: 2, parts: [{ name: 'Routing', exercises: 3, id: 1 }, { name: 'Middlewares', exercises: 7, id: 2 } ] } ] console.log(calculateTotalExercises(course))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Podrías empezar desglosando el problema. Así es como resolví esto.

Creé una función que encuentra el número total de ejercicios para un curso

 let totalExerciseForOneCourse = (parts) => { return parts.reduce((prev, curr) => prev + curr.exercises, 0) }

Luego, usamos el método de mapa para recorrer cada curso en la matriz de cursos , devolviendo una nueva matriz de objetos con todo lo que estaba en la matriz de cursos y agregando una propiedad de objeto totalExercises

 let newCourses = courses.map((course) => { const total = totalExerciseForOneCourse(course.parts); return Object.assign({}, course, { totalExercises: total }) })

Nuestra función totalExerciseForOneCourse toma un parámetro de matriz y calcula la suma de todos los ejercicios para un curso usando el método array.reduce

newCourses contiene nuestra nueva matriz con toda la información anterior y nueva

JSFiddle -

https://jsfiddle.net/swish933/9fwzysxa/

about 4 years ago · Juan Pablo Isaza Denunciar

0

La suma de varias matrices se puede representar en un solo componente con este aspecto

 {c.parts.reduce((a, b) => a += b.exercises, 0)}
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