1. 程式人生 > >Array reduce

Array reduce

Array.prototype.reduce()

按陣列中某個值進行分組

let questions = [{
    group: 'group1',
    title: 'question content 1'
}, {
    group: 'group1',
    title: 'question content 2'
}, {
    group: 'group1',
    title: 'question content 3'
}, {
    group: 'group2',
    title: 'question content 3'
}];

let newQuestions = questions.reduce(function (accumulator, currentValue) {
    accumulator[currentValue.group] = accumulator[currentValue.group] || [];
    accumulator[currentValue.group].push(currentValue);
    return accumulator;
}, {});

newQuestions值 輸出:
// newQuestions = {
//     group1: [
//         {group: 'group1', title: 'question content 1'},
//         {group: 'group1', title: 'question content 2'},
//         {group: 'group1', title: 'question content 3'}
//     ],
//     group2: [{group: 'group2', title: 'question content 3'}]
// }