题目1
// 输入
let arr = [
{name: '张三', age: 18},
{name: '李四', age: 20},
{name: '王五', age: 18},
{name: '赵六', age: 20},
{name: '孙七', age: 21},
];
// 输出
{
18: [{name: '张三', age: 18}, {name: '王五', age: 18}],
20: [{name: '李四', age: 20}, {name: '赵六', age: 20}],
21: [{name: '孙七', age: 21}],
}
代码
function groupBy(arr) {
let obj = {};
arr.forEach(item => {
if (!obj[item.age]) {
obj[item.age] = [];
}
obj[item.age].push(item);
});
return obj;
}
改成指定字段
function groupBy(arr,key) {
let obj = {};
arr.forEach(item => {
if (!obj[item[key]]) {
obj[item[key]] = [];
}
obj[item[key]].push(item);
});
return obj;
}
groupBy(arr,'age')
题目2
// 输入
let arr = [
{name: '张三', age: 18},
{name: '李四', age: 20},
{name: '王五', age: 18},
{name: '赵六', age: 20},
{name: '孙七', age: 21},
];
// 输出
[
{
key: "18",
data: [{name: '张三', age: 18}, {name: '王五', age: 18}]
},
{
key: "20",
data: [{name: '李四', age: 20}, {name: '赵六', age: 20}]
},
{
key: "21",
data: [{name: '孙七', age: 21}]
}
]
代码
function groupBy(arr) {
let obj = {};
arr.forEach(item => {
if (!obj[item.age]) {
obj[item.age] = [];
}
obj[item.age].push(item);
});
let resArr = []
Object.keys(obj).forEach(key=> {
resArr.push({
age: key,
data: obj[key],
})
})
return resArr
}
参考: