Object.groupBy
將一個對象或者數組的元素按照規則分組,
返回一個新對象,
Object.groupBy(items, callbackFn)
items:要分組的對象或數組(通常是數組)。
callbackFn(element, index, array):回調函數,返回一個字符串或 symbol,作為分組的 key。
返回值是一個普通對象({}),每個 key 對應一個數組,里面放這一組的所有元素。
按照條件分組示例
const users = [{ name: "Alice", age: 21 },{ name: "Bob", age: 25 },{ name: "Carol", age: 21 },
];const v = Object.groupBy(users, u => u.age)console.log(v){21: [{ name: "Alice", age: 21 },{ name: "Carol", age: 21 }],25: [{ name: "Bob", age: 25 }]
}
和 Array.prototype.groupBy 的區別:
Array.prototype.groupBy() 也存在,調用方式不一樣
Object.groupBy() 可以對「類數組」或可迭代對象分組。
Array.prototype.groupBy() 只能對數組分組。
const g = users.groupBy(u => u.age)
使用場景:
- 按照類型/屬性分組數據
- 按照首字母分組(通訊錄)
- 按照日期分組 (訂單,日志)
按照 首字母分組
const names = ["alice", "bob", "adam", "carol"];
const v = Object.groupBy(names, n => n[0])
console,log(v)
{a: ["alice", "adam"],b: ["bob"],c: ["carol"]
}