js实现员工工资排序
实现员工工资排序的JavaScript方法
使用Array.sort()方法
JavaScript的Array对象提供了sort()方法,可以对数组元素进行排序。默认情况下,sort()方法将元素转换为字符串并按Unicode码点排序。对于数字排序,需要提供自定义比较函数。
const employees = [
{ name: '张三', salary: 5000 },
{ name: '李四', salary: 8000 },
{ name: '王五', salary: 3000 }
];
// 升序排序
employees.sort((a, b) => a.salary - b.salary);
// 降序排序
employees.sort((a, b) => b.salary - a.salary);
处理相同工资的情况
当多个员工工资相同时,可以添加额外的排序条件,如按姓名排序。
employees.sort((a, b) => {
if (a.salary === b.salary) {
return a.name.localeCompare(b.name);
}
return a.salary - b.salary;
});
使用lodash库排序
对于更复杂的排序需求,可以使用lodash库的orderBy方法。
const _ = require('lodash');
const sortedEmployees = _.orderBy(employees, ['salary', 'name'], ['asc', 'asc']);
性能优化
对于大型员工数组,可以考虑使用更高效的排序算法或Web Worker进行后台排序。
// 使用快速排序实现
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[0];
const left = [];
const right = [];
for (let i = 1; i < arr.length; i++) {
arr[i].salary < pivot.salary ? left.push(arr[i]) : right.push(arr[i]);
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
可视化展示
排序后可以使用图表库如Chart.js或D3.js可视化展示工资分布。
// 使用Chart.js展示工资排序结果
const ctx = document.getElementById('salaryChart').getContext('2d');
new Chart(ctx, {
type: 'bar',
data: {
labels: employees.map(e => e.name),
datasets: [{
label: '工资',
data: employees.map(e => e.salary),
backgroundColor: 'rgba(54, 162, 235, 0.5)'
}]
}
});






