Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!