reduce メソッドを使用すると、属性によって分類された操作を迅速に実装でき、ループ反復を使用するよりも効率的です。簡単なサンプルコードを次に示します。
const arr = [
{
id: 1, name: 'A' },
{
id: 2, name: 'B' },
{
id: 3, name: 'A' },
{
id: 4, name: 'C' },
{
id: 5, name: 'B' },
];
const result = arr.reduce((acc, item) => {
const key = item.name;
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {
});
console.log(result);
/*
{
A: [{ id: 1, name: 'A' }, { id: 3, name: 'A' }],
B: [{ id: 2, name: 'B' }, { id: 5, name: 'B' }],
C: [{ id: 4, name: 'C' }]
}
*/
console.log(Object.entries(result));
この例では、reduce メソッドを使用して配列を反復し、各要素の name 属性をキーとして使用し、対応する要素を key で指定された配列に追加し、最後に属性値をキーとして持つオブジェクトを返します。
最後に、結果を Object.entries() メソッドによって 2 次元配列に変換して出力します。