摘要:在本教程中,您将学习如何使用 JavaScript groupBy() 方法根据指定回调函数返回的值对可迭代对象中的元素进行分组。
JavaScript groupBy() 函数简介
Object.groupBy() 是一个静态方法,允许您根据指定回调函数返回的值对可迭代对象中的元素进行分组。
当您想要将元素分类到不同的组时,Object.groupBy() 会非常有用。
以下是 groupBy() 方法的语法
Object.groupBy(items, callbackFn);Code language: JavaScript (javascript)在此语法中
items:您要分组的元素的可迭代对象(例如,数组)。callbackFn:要对可迭代对象中的每个元素执行的函数。它应该返回一个可以强制转换为属性键(字符串或符号)的值,该值表示当前元素所属的组。
Object.groupBy() 方法返回一个空原型对象,该对象包含所有组的属性,每个属性都分配给一个包含关联组元素的数组。
Object.groupBy() 方法对可迭代对象中的每个元素调用 callbackFn 函数。
callbackFn 函数应该返回一个字符串或符号,该字符串或符号用作当前元素所属组的键。
callbackFn 返回的值用作 Object.groupBy() 返回的对象的键,每个键都与一个关联数组相关联,该数组包含所有共享相同组的元素。
JavaScript groupBy() 函数
让我们探索一些使用 Object.groupBy() 函数的示例。
1) 使用 Object.groupBy() 方法按类型对书籍进行分组
以下示例使用 groupBy() 方法按类型对书籍对象进行分组
const books = [
{ title: 'The Catcher in the Rye', genre: 'Fiction' },
{ title: 'Sapiens', genre: 'Non-Fiction' },
{ title: 'Dune', genre: 'Science Fiction' },
{ title: 'To Kill a Mockingbird', genre: 'Fiction' },
];
const group = Object.groupBy(books, (book) => book.genre);
console.log(group);Code language: JavaScript (javascript)输出
[Object: null prototype] {
Fiction: [
{ title: 'The Catcher in the Rye', genre: 'Fiction' },
{ title: 'To Kill a Mockingbird', genre: 'Fiction' }
],
'Non-Fiction': [ { title: 'Sapiens', genre: 'Non-Fiction' } ],
'Science Fiction': [ { title: 'Dune', genre: 'Science Fiction' } ]
}Code language: JavaScript (javascript)在此示例中,我们使用书籍对象的类型属性在回调函数中进行分组。结果对象有三个组:Fiction、Non-Fiction 和 Science Fiction。
为了使代码更简洁,您可以使用 对象解构,如下所示
const group = Object.groupBy(books, ({genre}) => genre);Code language: JavaScript (javascript){genre} 从书籍对象中提取 genre 属性,回调函数将其作为组的键返回。
2) 使用 Object.groupBy() 方法对数字进行分组
以下示例使用 groupBy() 方法将数字分类到 odd 和 even 组中
const numbers = [1, 2, 6, 5, 4, 9];
const group = Object.groupBy(numbers, (n) => (n % 2 == 0 ? 'even' : 'odd'));
console.log(group);Code language: JavaScript (javascript)输出
[Object: null prototype] { odd: [ 1, 5, 9 ], even: [ 2, 6, 4 ] }Code language: JavaScript (javascript)在此示例中,我们定义一个回调函数,该函数接受每个数字 n 并检查它是否为偶数 (n % 2 == 0)。
如果为偶数,回调函数将返回字符串 'even';否则,它将返回 'odd'。groupBy() 方法使用字符串作为分组的键。
摘要
- 使用 JavaScript
Object.groupBy()是一个强大的方法,用于根据指定回调函数返回的特定条件对元素进行分组。