在JavaScript对象的新的数组的数组对象的属性值的总和 [英] Sum of array object property values in new array of objects in Javascript

查看:210
本文介绍了在JavaScript对象的新的数组的数组对象的属性值的总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有,我需要的对象的新的数组对象属性值的总和对象的数组,

输入:

  VAR inputArray = [
  {主题:'数学',标记:'40',noOfStudents:5},
  {主题:科学,标志:'50',noOfStudents:16},
  {主题:'历史',标记:35,noOfStudents:23},
  {主题:科学,标志:'65',noOfStudents:2},
  {主题:'数学',标记:30,noOfStudents:'12'},
  {主题:历史记录,标志:'55',noOfStudents:20},
  。
  。
  。
];

输出我需要的,

  VAR outputArray = [
  {主题:'数学',标志:'70',noOfStudents:17},
  {主题:科学,标志:'115',noOfStudents:18},
  {主题:历史记录,标志:'95',noOfStudents:43},
  。
  。
  。
];

我要痕之和没有新对象数组科目的学生。会有输入数组中其他学科的对象(即,地理,物理等)的N多。


解决方案

您可以做到这一点与<一个href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\"相对=nofollow> 的forEach thisArg 可选参数

\r
\r

VAR inputArray = [\r
  {主题:'数学',标记:'40',noOfStudents:5},\r
  {主题:科学,标志:'50',noOfStudents:16},\r
  {主题:'历史',标记:35,noOfStudents:23},\r
  {主题:科学,标志:'65',noOfStudents:2},\r
  {主题:'数学',标记:30,noOfStudents:'12'},\r
  {主题:历史记录,标志:'55',noOfStudents:20},\r
],outputArray = [];\r
  \r
inputArray.forEach(函数(五){\r
  如果(!这[e.subject]){\r
    这个[e.subject] = {主题:e.subject,标志:0,noOfStudents:0}\r
     outputArray.push(这[e.subject]);\r
   }\r
  这个[e.subject] .marks + =号(e.marks);\r
  这个[e.subject] .noOfStudents + =号(e.noOfStudents);\r
},{});\r
\r
的console.log(outputArray)

\r

\r
\r

I have an array of objects where i need sum of object property values in new array of objects,

Input:

var inputArray = [
  { subject: 'Maths', marks: '40', noOfStudents: '5' },
  { subject: 'Science', marks: '50', noOfStudents: '16' },
  { subject: 'History', marks: '35', noOfStudents: '23' },
  { subject: 'Science', marks: '65', noOfStudents: '2' },
  { subject: 'Maths', marks: '30', noOfStudents: '12' },
  { subject: 'History', marks: '55', noOfStudents: '20' },
  .
  .
  .
];

Output i need,

var outputArray = [
  { subject: 'Maths', marks: '70', noOfStudents: '17' },
  { subject: 'Science', marks: '115', noOfStudents: '18' },
  { subject: 'History', marks: '95', noOfStudents: '43' },
  .
  .
  .
];

I want sum of marks and no of students of subjects in new object array. There would be N number of other subject objects (i.e-Geography, Physics etc) in the input array.

解决方案

You can do this with forEach and thisArg optional parameter

var inputArray = [
  { subject: 'Maths', marks: '40', noOfStudents: '5' },
  { subject: 'Science', marks: '50', noOfStudents: '16' },
  { subject: 'History', marks: '35', noOfStudents: '23' },
  { subject: 'Science', marks: '65', noOfStudents: '2' },
  { subject: 'Maths', marks: '30', noOfStudents: '12' },
  { subject: 'History', marks: '55', noOfStudents: '20' },
], outputArray = [];
  
inputArray.forEach(function(e) {
  if(!this[e.subject]) {
    this[e.subject] = { subject: e.subject, marks:  0, noOfStudents: 0 }
     outputArray.push(this[e.subject]);
   }
  this[e.subject].marks += Number(e.marks);
  this[e.subject].noOfStudents += Number(e.noOfStudents);
}, {});

console.log(outputArray)

这篇关于在JavaScript对象的新的数组的数组对象的属性值的总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆