簡體   English   中英

使用 Javascript 的數組中嵌套的 object 值的總和

[英]Sum of nested object values in Array using Javascript

我想得到鍛煉的總和 我正在嘗試獲取兩個 Course 數組元素的總和。** 嘗試對單個數組元素使用 reduce 方法,但無法得到總和。 我嘗試了 forOf 和 forIn 循環,但我無法解決這個問題。

const courses = [
{
  name: "Half Stack application development",
  id: 1,
  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: 'Redux',
      exercises: 11,
      id: 4
    }
  ]
}, 
{
  name: "Node",
  id: 2,
  parts: [
    {
      name: 'Routing',
      exercises: 3,
      id: 1
    },
    {
      name: 'Middleware',
      exercises: 7,
      id: 2
    }
  ]
}

]

您可以使用mapreduce組合以獲得每門課程的鍛煉總量。

 const courses = [ { name: "Half Stack application development", id: 1, 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: 'Redux', exercises: 11, id: 4 } ] }, { name: "Node", id: 2, parts: [ { name: 'Routing', exercises: 3, id: 1 }, { name: 'Middleware', exercises: 7, id: 2 } ] } ] const sum = courses.reduce((acc, course) => { acc[course.name] = course.parts.reduce((acc, el) => acc + el.exercises, 0); return acc; }, {}); console.log(sum);

想想這些步驟,這里有提示:

  1. 先總結每門課程的練習
  2. 總結所有課程的所有練習

1. 每門課程的總結練習

這里的想法是為每門課程創建一組新的練習計數

exercises_courses = courses.map(item => {
  item.parts.reduce((sum, part) => sum + part.exercises, 0)
})

2.總結所有練習

all_exercises = exercises_courses.reduce((sum, exercises_course) => sum + exercises_course, 0)

console.log(all_exercises)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM