1. 数组分组 groupBy
来源:腾讯 PCG 一面
题目
实现一个函数 groupBy(arr, key),按照 key 对数组 arr 进行分组。
代码
js
// 实现一个函数groupBy(arr, key),按照key对数组arr进行分组。
// 腾讯PCG一面
function groupBy(arr, key) {
const res = {};
for(const item of arr) {
const val = item[key];
if(!res[val]){
res[val] = []
}
res[val].push(item);
}
return res;
}
const data = [
{ name: "Alice", age: 20 },
{ name: "Bob", age: 20 },
{ name: "Charlie", age: 22 }
];
console.log(groupBy(data, "age"));思路
使用哈希表存储分组结果:
- 创建空对象
res作为结果 - 遍历数组中的每个元素:
- 获取元素的
key对应的值val - 如果
res[val]不存在,初始化为空数组 - 将当前元素 push 到
res[val]数组中
- 获取元素的
- 返回结果对象
关键点
- 使用对象作为哈希表,key 为分组依据的值,value 为该组的元素数组
- 需要判断分组是否已存在,不存在则初始化为空数组
- 时间复杂度
,空间复杂度