亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript 對數組中匹配相同鍵的所有項目求和

javascript 對數組中匹配相同鍵的所有項目求和

慕斯709654 2023-06-29 15:43:48
我有一個像這樣的 JSON:  [   {      "faculty":{         "_id":"5f9c3e04e5a5423cec34b2e2",         "code":"khmt",         "facultyName":"Computer Science"      },      "classSize":91,      "warnedLength":61   },   {      "faculty":{         "_id":"5f9c53c8a0db8f4240ec6f71",         "code":"dtvt",         "facultyName":"Electronics and Telecommunication"      },      "classSize":89,      "warnedLength":44   },   {      "faculty":{         "_id":"5f9c53c8a0db8f4240ec6f71",         "code":"dtvt",         "facultyName":"Electronics and Telecommunication"      },      "classSize":59,      "warnedLength":20   },   {      "faculty":{         "_id":"5f9c53c8a0db8f4240ec6f71",         "code":"hkvt",         "facultyName":"Space Airline"      },      "classSize":10,      "warnedLength":5   },   {      "faculty":{         "_id":"5f9c53c8a0db8f4240ec6f71",         "code":"hkvt",         "facultyName":"Space Airline"      },      "classSize":20,      "warnedLength":10   },   {      "faculty":{         "_id":"5f9c53c8a0db8f4240ec6f71",         "code":"hkvt",         "facultyName":"Space Airline"      },      "classSize":30,      "warnedLength":15   }]我想要這樣的輸出:[   {      "faculty":{         "_id":"5f9c3e04e5a5423cec34b2e2",         "code":"khmt",         "facultyName":"Computer Science"      },      "totalClassSize":91,      "totalWarnedLength":61   },   {      "faculty":{         "_id":"5f9c53c8a0db8f4240ec6f71",         "code":"dtvt",         "facultyName":"Electronics and Telecommunication"      },      "totalClassSize":148, // total classSize of all class has facultyName is "Electronics and Telecommunication"      "totalWarnedLength":64 // total warnedLength of all class has facultyName is "Electronics and Telecommunication"   },輸出是一個數組,其總和classSize具有相同的屬性屬性totalClassSize,并且總和warnedLength具有相同的屬性屬性totalWarnedLength輸入是一個數組,輸出也仍然是一個數組我是學習代碼的初學者,但我仍然被這個問題困擾了一段時間非常感謝你幫助我,祝你有美好的一天
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

使用Array.prototype.reduce,您可以通過將當前輸入數組作為faculty._id對象鍵進行分組來生成新對象,并基于此,您可以計算相同對象鍵的totalWarnedLength和。totalClassSize

const input = [{

    "faculty": {

      "_id": "5f9c3e04e5a5423cec34b2e2",

      "code": "khmt",

      "facultyName": "Computer Science"

    },

    "classSize": 91,

    "warnedLength": 61

  },

  {

    "faculty": {

      "_id": "5f9c53c8a0db8f4240ec6f71",

      "code": "dtvt",

      "facultyName": "Electronics and Telecommunication"

    },

    "classSize": 89,

    "warnedLength": 44

  },

  {

    "faculty": {

      "_id": "5f9c53c8a0db8f4240ec6f71",

      "code": "dtvt",

      "facultyName": "Electronics and Telecommunication"

    },

    "classSize": 59,

    "warnedLength": 20

  },

  {

    "faculty": {

      "_id": "5f9c53c8a0db8f4240ec6f71",

      "code": "hkvt",

      "facultyName": "Space Airline"

    },

    "classSize": 10,

    "warnedLength": 5

  },

  {

    "faculty": {

      "_id": "5f9c53c8a0db8f4240ec6f71",

      "code": "hkvt",

      "facultyName": "Space Airline"

    },

    "classSize": 20,

    "warnedLength": 10

  },

  {

    "faculty": {

      "_id": "5f9c53c8a0db8f4240ec6f71",

      "code": "hkvt",

      "facultyName": "Space Airline"

    },

    "classSize": 30,

    "warnedLength": 15

  }

];


const groupBy = input.reduce((acc, cur) => {

  if (acc[cur.faculty['_id']]) {

    acc[cur.faculty['_id']].totalClassSize += cur.classSize;

    acc[cur.faculty['_id']].totalWarnedLength += cur.warnedLength;

  } else {

    acc[cur.faculty['_id']] = {

      faculty: cur.faculty,

      totalClassSize: cur.classSize,

      totalWarnedLength: cur.warnedLength

    };

  }

  return acc;

}, {});

const output = Object.values(groupBy);

console.log(output);





查看完整回答
反對 回復 2023-06-29
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號