const data = [{name: 'Alice', age: 25, score: 85}, {name: 'Bob', age: 22, score: 78}];
// 优化思路:使用数组的原生排序和分组方法,避免不必要的循环和中间变量。
// 排序时利用数组的 sort 方法,按照题目要求的规则进行排序,此方法效率较高。
// 分组时利用数组的 reduce 方法,遍历一次数组完成分组,减少重复操作。
const sortedData = data.sort((a, b) => {
if (a.age!== b.age) {
return b.age - a.age;
} else {
return a.score - b.score;
}
});
const groupedData = sortedData.reduce((acc, item) => {
const key = item.age >= 25? '25 及以上' : '25 以下';
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {});
console.log(groupedData);
- 排序优化思路:
- 使用
Array.prototype.sort
方法对数组进行排序。
- 比较函数根据年龄降序和分数升序的规则编写。这样直接利用原生数组方法,效率相对较高,避免了手动实现复杂的排序算法。
- 分组优化思路:
- 使用
Array.prototype.reduce
方法对排序后的数组进行分组。
- 在
reduce
方法的回调函数中,根据年龄判断分组的键,然后将元素添加到对应的数组中。这种方式一次遍历数组就完成分组,减少了循环次数,提高了性能。