JavaScript group() 方法
最后修改于 2025 年 4 月 4 日
在本文中,我们将展示如何使用 JavaScript 中的 group
方法对数组元素进行分组。
数组分组
数组分组是根据分组函数将数组元素组织成类别的一种操作。group
方法根据提供的回调函数返回的字符串值对数组的元素进行分组。
此方法返回一个新对象,该对象具有代表组的属性和包含属于每个组的元素的数组。原始数组不会被修改。回调函数将针对数组中的每个元素执行。
group
方法是在 ECMAScript 2022 (ES13) 中引入的。它提供了一种方便的方法来对数据进行分类,无需外部库。分组是区分大小写的,并保持元素的原始顺序。
基本 group() 示例
以下示例演示了 group
方法的基本用法。
const inventory = [ { name: 'asparagus', type: 'vegetables' }, { name: 'bananas', type: 'fruit' }, { name: 'goat', type: 'meat' }, { name: 'cherries', type: 'fruit' }, { name: 'fish', type: 'meat' } ]; const result = inventory.group(({ type }) => type); console.log(result);
我们创建了一个对象数组,并根据它们的 type 属性对它们进行分组。回调函数提取 type 值,该值成为组键。结果是一个对象,其属性与组键匹配。
$ node main.js { vegetables: [{ name: 'asparagus', type: 'vegetables' }], fruit: [ { name: 'bananas', type: 'fruit' }, { name: 'cherries', type: 'fruit' } ], meat: [ { name: 'goat', type: 'meat' }, { name: 'fish', type: 'meat' } ] }
按奇偶性对数字进行分组
我们可以根据数字是偶数还是奇数对数字进行分组。
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const grouped = numbers.group((num) => { return num % 2 === 0 ? 'even' : 'odd'; }); console.log(grouped);
我们创建了一个数字数组,并将它们分组到“even”和“odd”类别中。回调函数检查每个数字的奇偶性,并返回相应的组键。结果包含“even”和“odd”键下的两个数组。
$ node main.js { odd: [1, 3, 5, 7, 9], even: [2, 4, 6, 8, 10] }
按字符串长度分组
group
方法可以按字符串长度对字符串进行分类。
const words = ['apple', 'banana', 'cat', 'dog', 'elephant', 'fox']; const lengthGroups = words.group((word) => { return word.length > 5 ? 'long' : 'short'; }); console.log(lengthGroups);
我们根据它们的长度将一个单词数组分组到“long”和“short”类别中。回调函数检查每个单词的字符数,并返回相应的组键。分组是基于我们长度标准的动态分组。
$ node main.js { short: ['apple', 'cat', 'dog', 'fox'], long: ['banana', 'elephant'] }
按年龄范围对对象进行分组
我们可以使用 group
方法将对象分组到年龄范围。
const people = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 17 }, { name: 'Charlie', age: 30 }, { name: 'David', age: 15 }, { name: 'Eve', age: 22 } ]; const ageGroups = people.group((person) => { if (person.age < 18) return 'minor'; if (person.age < 30) return 'adult'; return 'senior'; }); console.log(ageGroups);
我们根据人们的年龄将他们分为“minor”、“adult”和“senior”组。回调函数包含条件逻辑,以确定每个人的适当组。结果是一个具有三个属性的对象。
$ node main.js { minor: [ { name: 'Bob', age: 17 }, { name: 'David', age: 15 } ], adult: [ { name: 'Alice', age: 25 }, { name: 'Eve', age: 22 } ], senior: [{ name: 'Charlie', age: 30 }] }
使用复杂键进行分组
group
方法可以使用结合多个值的复杂键。
const products = [ { name: 'Laptop', category: 'Electronics', price: 999 }, { name: 'Shirt', category: 'Clothing', price: 25 }, { name: 'Phone', category: 'Electronics', price: 699 }, { name: 'Pants', category: 'Clothing', price: 45 } ]; const groupedProducts = products.group((product) => { return `${product.category}-${product.price > 100 ? 'expensive' : 'cheap'}`; }); console.log(groupedProducts);
我们按类别和价格范围对产品进行分组。回调函数创建结合类别和价格信息的复合键。这演示了如何创建更复杂的分组标准。
$ node main.js { 'Electronics-expensive': [ { name: 'Laptop', category: 'Electronics', price: 999 }, { name: 'Phone', category: 'Electronics', price: 699 } ], 'Clothing-cheap': [ { name: 'Shirt', category: 'Clothing', price: 25 }, { name: 'Pants', category: 'Clothing', price: 45 } ] }
来源
在本文中,我们演示了如何使用 group() 方法在 JavaScript 中对数组元素进行分类。
作者
列出 所有 JS 数组函数。