groupByは抽象化されたブレーク処理だと考えることができるので、使い所は多い。
// groupByの定義 Array.prototype.groupBy = function(convertKeyFunc) { let groupList = []; let group = null; let first = true; for (const item of this) { const currentKey = convertKeyFunc(item); if (first) { first = false; group = { key: currentKey, items: [] }; } else if (currentKey != group.key) { groupList.push(group); group = { key: currentKey, items: [] }; } group.items.push(item); } if (group !== null) { groupList.push(group); } return groupList; } // 使用例 [ "a-10", "a-20", "a-30", "b-10", "c-10", "c-20" ].groupBy(i => i.substr(0, 1)).forEach(group => { console.log(`-- start: ${group.key} --`); for (const item of group.items) { console.log(item); } console.log(`-- end : ${group.key} --`); }); // 出力 // -- start: a -- // a-10 // a-20 // a-30 // -- end : a -- // -- start: b -- // b-10 // -- end : b -- // -- start: c -- // c-10 // c-20 // -- end : c --