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);

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);
添加回答
舉報