使用Javascript的数组中嵌套对象值的总和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Javascript的数组中嵌套对象值的总和相关的知识,希望对你有一定的参考价值。

我想得到运动的总和。我正在尝试两个课程数组元素的总和。**试图在单个数组元素上使用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)
另一答案

const Content = ({ partsName }) => {
  console.log("partsName", partsName);

  // var totalExercise = partsName.map(name => name);
  // let a = totalExercise.reduce((prev, cur) => prev + cur.exercises, 0);
  // console.log(a);

  return (
    <div>
      {partsName.map(course => {
        return (
          <div key={course.id}>
            <h1 key={course.id}>{course.name}</h1>
            <ul>
              {course.parts.map(names => (
                <li key={names.id}>
                  {names.name} <span>{names.exercises}</span>
                </li>
              ))}
            </ul>
            <p>Total Exercise:</p>
          </div>
        );
      })}
    </div>
  );
};
export default Content;

这是我的reactJS代码。试图获得锻炼。

以上是关于使用Javascript的数组中嵌套对象值的总和的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose - 使用 find() 查询文档,其中嵌套数组值的总和在一定范围内

Mongoose:通过 findOneAndUpdate 查询使用嵌套对象数组的总和更新父子数据属性不起作用

删除嵌套数组中具有键值的对象

如何计算数组中对象键的总和 - javascript

试图在嵌套字典中查找唯一值的总和。 (见例子!)

添加对象数组javascript的值