如何使用forEach方法实现按年龄分组人员的功能?
用forEach实现按年龄分组
你可以通过初始化一个空对象存储分组结果,再用forEach遍历人员数组完成分组,逻辑和你用reduce写的完全一致:
const people = [ {name:'Kyle', age:42}, {name:'Suk', age:34}, {name:'Lol', age:35}, {name:'Pol', age:23}, {name:'Kol', age:23} ]; // 初始化空的分组对象 const groupedPeople = {}; people.forEach(person => { const age = person.age; // 如果当前年龄对应的分组不存在,创建空数组 if (!groupedPeople[age]) { groupedPeople[age] = []; } // 将当前人员加入对应年龄的分组数组 groupedPeople[age].push(person); }); // 输出分组结果 console.log(groupedPeople);
逻辑说明
这个实现和你用reduce的版本逻辑完全相同:
- 先获取当前遍历到的人员的年龄
- 检查分组对象中是否存在该年龄对应的数组,不存在则初始化一个空数组
- 将当前人员对象推入对应年龄的数组中
区别只在于:reduce是通过回调函数返回累积的分组对象完成操作,而forEach是直接操作外部定义的分组对象,不需要返回值。
内容的提问来源于stack exchange,提问作者Suleyman Eminbeyli
相关产品推荐
相关产品推荐

