JavaScript Object.groupBy()
定义和用法
Object.groupBy() 方法根据回调函数返回的字符串值对对象的元素进行分组。
Object.groupBy() 方法不会改变原始对象。
注意
原始对象和返回对象中的元素是相同的。
对任一对象的更改都会反映在另一个对象中。
Object.groupBy() 与 Map.groupBy() 的区别
Object.groupBy() 和 Map.groupBy() 的区别在于:
Object.groupBy() 将元素分组到一个 JavaScript 对象中。
Map.groupBy() 将元素分组到一个 Map 对象中。
实例
// 创建一个数组
const fruits = [
{name: "apples", quantity: 300},
{name: "bananas", quantity: 500},
{name: "oranges", quantity: 200},
{name: "kiwi", quantity: 150}
];
// 用于分组元素的回调函数
function myCallback({ quantity }) {
return quantity > 200 ? "ok" : "low";
}
// 根据数量分组
const result = Object.groupBy(fruits, myCallback);
语法
Object.groupBy(iterable, callback)
参数
| 参数 | 描述 |
|---|---|
| iterable | 必需。可迭代的数组或 Map。 |
| callback |
必需。为每个元素执行的函数。 该函数应返回元素的分组名称。 |
返回值
| 类型 | 描述 |
|---|---|
| Iterator | 包含分组元素的可迭代对象。 |
浏览器支持
Object.groupBy() 是 ES2024 的特性。
自 2024 年 3 月起,所有现代浏览器均完全支持:
| Chrome | Edge | Firefox | Safari | Opera |
|---|---|---|---|---|
| Chrome 117 | Edge 117 | Firefox 119 | Safari 17.4 | Opera 103 |
| 2023 年 9 月 | 2023 年 9 月 | 2023 年 10 月 | 2024 年 10 月 | 2023 年 5 月 |