在JavaScript对象的新的数组的数组对象的属性值的总和 [英] Sum of array object property values in new array of objects in Javascript
本文介绍了在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\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
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屋!
查看全文