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

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

聚合 JavaScript 集合

聚合 JavaScript 集合

隔江千里 2023-07-29 16:39:47
我有一個集合,其中我必須僅使用 javascript 來使用聚合。我已經使用 Lodash 庫嘗試過一些事情,但沒有成功。如果你能指導我以某種方式對集合進行分組,”我認為這應該可以解決。var sample = [        {                       "DESCRIPTOR": "HAPPY",            "DESCRIPTOR_ID": 400001,            "QUESTION_ID": "A_QUES_1",            "CHOICE": "A",            "SCORE": 1,            "__v": 0        },        {                       "DESCRIPTOR": "HAPPY",            "DESCRIPTOR_ID": 400001,            "QUESTION_ID": "A_QUES_2",            "CHOICE": "B",            "SCORE": 2,            "__v": 0        },{                       "DESCRIPTOR": "SAD",            "DESCRIPTOR_ID": 400002,            "QUESTION_ID": "B_QUES_1",            "CHOICE": "A",            "SCORE": 2,            "__v": 0        },        {                       "DESCRIPTOR": "SAD",            "DESCRIPTOR_ID": 400002,            "QUESTION_ID": "B_QUES_2",            "CHOICE": "B",            "SCORE": 2,            "__v": 0        }    ]我期望像下面這樣的東西, result = [{"DESCRIPTOR": "HAPPY", "TOTAL_SCORE":3}, {"DESCRIPTOR": "SAD", "TOTAL_SCORE":4}]你能幫我只用 JavaScript 編寫這段代碼嗎? 謝謝
查看完整描述

2 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

您可以使用數組歸約方法,

let result = sample.reduce((prev, curr) => {

? ?const descriptorName = curr.DESCRIPTOR;

? ?const index = prev.findIndex((item) => item.DESCRIPTOR === descriptorName);

? ?if(index > -1) {

? ? ? prev[index].SCORE += curr.SCORE;

? ?} else {

? ? ? prev.push({'DESCRIPTOR': descriptorName, 'SCORE': curr.SCORE})

? ?}

? ?return prev;

}, []);


console.log(result);


查看完整回答
反對 回復 2023-07-29
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

下面的代碼根據 DESCRIPTOR_ID 對對象進行分組。首先使用方法遍歷數組Array.prototype.reduce(),獲取descriptor_id并將其作為key,并統計每個key的總分。最后使用方法獲取值Object.values()。


const sample = [

  {

    DESCRIPTOR: 'HAPPY',

    DESCRIPTOR_ID: 400001,

    QUESTION_ID: 'A_QUES_1',

    CHOICE: 'A',

    SCORE: 1,

    __v: 0,

  },

  {

    DESCRIPTOR: 'HAPPY',

    DESCRIPTOR_ID: 400001,

    QUESTION_ID: 'A_QUES_2',

    CHOICE: 'B',

    SCORE: 2,

    __v: 0,

  },

  {

    DESCRIPTOR: 'SAD',

    DESCRIPTOR_ID: 400002,

    QUESTION_ID: 'B_QUES_1',

    CHOICE: 'A',

    SCORE: 2,

    __v: 0,

  },

  {

    DESCRIPTOR: 'SAD',

    DESCRIPTOR_ID: 400002,

    QUESTION_ID: 'B_QUES_2',

    CHOICE: 'B',

    SCORE: 2,

    __v: 0,

  },

];


const ret = Object.values(

  sample.reduce((prev, c) => {

    const p = prev;

    const key = c.DESCRIPTOR_ID;

    if (!p[key]) p[key] = { DESCRIPTOR: c.DESCRIPTOR, TOTAL_SCORE: c.SCORE };

    else p[key].TOTAL_SCORE += c.SCORE;

    return p;

  }, {})

);

console.log(ret);


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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