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"]
}