【问题标题】:Sum of nested object values in Array using Javascript使用Javascript在数组中嵌套对象值的总和
【发布时间】:2019-11-17 02:51:19
【问题描述】:

我想得到运动的总和。我正在尝试获取两个 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
    }
  ]
}

]

【问题讨论】:

  • 请发布您尝试的代码,否则我们无法帮助您改进它们。

标签: javascript arrays javascript-objects


【解决方案1】:

您可以结合使用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);

【讨论】:

  • 我想分别得到课程名称:半栈应用程序开发和“节点”的练习总和。
  • 当然...已针对此要求进行了更新!让我知道它是否应该采用不同的格式
  • 它的工作,但我不想显示像这样的值:4210,我想要这样:半栈应用程序开发:42 和节点:10
  • 有什么方法可以分享我的代码吗?我尝试了几种方法来解决它,但无法解决它。
【解决方案2】:

想想步骤,这里有提示:

  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)

【讨论】:

  • 我想分别得到两个数组元素的总和。
  • 所以,第一步就够了
猜你喜欢
  • 2017-09-30
  • 2021-09-02
  • 1970-01-01
  • 2016-12-23
  • 2015-10-18
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多