聚合 JavaScript 集合

我有一个集合,其中我必须仅使用 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 编写这段代码吗? 谢谢


隔江千里
浏览 119回答 2
2回答

人到中年有点甜

您可以使用数组归约方法,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);

凤凰求蛊

下面的代码根据 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript