Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象数组中的分组求和_Javascript_Arrays_Javascript Objects - Fatal编程技术网

Javascript对象数组中的分组求和

Javascript对象数组中的分组求和,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,基于我想要创建outputArray的inputArray,标记outputArray中的计算如下所示 第一组=物理+化学+数学 第2组=历史+地理 第3组=第一语言+第二语言 组总数=组1+组2+组3 var inputArray = [ { subject: 'Physics', marks: '60' }, { subject: 'History', marks: '35' }, { subject: 'Chemistry', marks: '50' }, { subje

基于我想要创建outputArray的inputArray,标记outputArray中的计算如下所示

第一组=物理+化学+数学

第2组=历史+地理

第3组=第一语言+第二语言

组总数=组1+组2+组3

var inputArray = [
  { subject: 'Physics', marks: '60' },
  { subject: 'History', marks: '35' },
  { subject: 'Chemistry', marks: '50' }, 
  { subject: 'Language First', marks: '70' },
  { subject: 'Geography', marks: '65' },
  { subject: 'Maths', marks: '40' },
  { subject: 'Language Second', marks: '50' },
  .
  .
  .
];

var outputArray = [
  { subject: 'Group 1', marks: '150' },
  { subject: 'Group 2', marks: '100' },
  { subject: 'Group 3', marks: '120' },
  { subject: 'Group Total', marks: '370' },
  .
  .
  .
];

您可以使用以下代码获取它:

for(var i in inputArray){
   if(inputArray[i].subject == "Physics" || inputArray[i].subject == "Chemistry" || inputArray[i].subject == "Maths")
       outputArray[0].marks+= Number(inputArray[i].marks);

   else if(inputArray[i].subject == "History" || inputArray[i].subject == "Geography")
      outputArray[1].marks+= Number(inputArray[i].marks);

  else if(inputArray[i].subject == "Language Second" || inputArray[i].subject == "Language First")
      outputArray[2].marks+= Number(inputArray[i].marks);

}


希望能有所帮助:)

此建议适用于某些对象,一个作为对受试者组的引用,另一个作为对结果集的引用

首先,结果集是基于想要的组构建的。在此循环中,将生成引用

其次,将
输入阵列
循环,并将
标记
添加到主题所在的组中<代码>标记也添加到组总数中

var-inputArray=[{科目:物理,成绩:60'},{科目:历史,成绩:35'},{科目:化学,成绩:50'},{科目:语言第一,成绩:70'},{科目:地理,成绩:65'},{科目:数学,成绩:40'},{科目:语言第二,成绩:50'},
分组={'group1':['Physics'、'Chemistry'、'math']、'group2':['History'、'Geography']、'group3':['Language First'、'Language Second']、'grouptotal':null},
reference=Object.create(null),
subjects=Object.create(空),
outputArray=Object.keys(groups).map(函数(k){
参考文献[k]={主题:k,标记:0};
isArray(groups[k])&&groups[k].forEach(函数(a){subjects[a]=k;});
返回引用[k];
});
forEach(函数(a){
参考[受试者[a.受试者]]分数+=+a.分数;
参考['Group Total'].分数+=+a.分数
});

控制台日志(输出阵列)
考虑使用
对象.键
数组.索引
函数和预定义的
组映射
对象的以下解决方案:

var groupsMap = {
    'Group 1': ['Physics','Chemistry','Maths'],
    'Group 2': ['History','Geography'],
    'Group 3': ['Language First','Language Second']
}, output = {'Group Total': 0}, keys = Object.keys(groupsMap), len = keys.length;

inputArray.forEach(function(obj){
    for (var i = 0; i < len; i++) {
        if (groupsMap[keys[i]].indexOf(obj['subject']) !== -1) {
            this[keys[i]] = this[keys[i]] || 0;
            this[keys[i]] += parseInt(obj['marks']);
            this['Group Total'] += parseInt(obj['marks']);
            break;  // avoids redundant iterations
        }
    }
}, output);

var outputArray = Object.keys(output).map((k) => ({'subject': k, 'marks': output[k]}));

console.log(JSON.stringify(outputArray, 0, 4));

您似乎忘记在问题中包含问题。仍然没有问题…请阅读和。每个数组中的
是什么。。?它们是如何延伸的?3点的意思和数组中的其他对象一样,有10多个对象,但我没有全部提到,所以我使用了那个点。
[
    {
        "subject": "Group Total",
        "marks": 370
    },
    {
        "subject": "Group 1",
        "marks": 150
    },
    {
        "subject": "Group 2",
        "marks": 100
    },
    {
        "subject": "Group 3",
        "marks": 120
    }
]