如何按EmployeeName升序排序按EmployeeId分组的数组?
按EmployeeName对分组后的员工数据升序排序
现有一组按EmployeeId分组的员工数据,需要按EmployeeName进行升序排序,最终返回与输入格式一致的结构。
输入数据
{ 13: [{employeeId:13,employeeName:"Nova"}], 21: [{employeeId:21,employeeName:"Avinash"},{employeeId:21,employeeName:"Avinash"}], 23: [{employeeId:23,employeeName:"Mamatha"}], 24: [{employeeId:24,employeeName:"Swetha"}] }
解决方法
可以通过以下步骤实现排序:
- 将对象转换为键值对数组,方便进行排序操作
- 根据每个分组中员工的
employeeName进行升序比较(因分组内员工名称一致,取每组第一个员工的名称即可) - 将排序后的键值对数组重新转换为对象
具体代码实现如下:
const groupedData = { 13: [{employeeId:13,employeeName:"Nova"}], 21: [{employeeId:21,employeeName:"Avinash"},{employeeId:21,employeeName:"Avinash"}], 23: [{employeeId:23,employeeName:"Mamatha"}], 24: [{employeeId:24,employeeName:"Swetha"}] }; // 转换为键值对数组并按EmployeeName升序排序 const sortedEntries = Object.entries(groupedData).sort((a, b) => { const nameA = a[1][0].employeeName.toLowerCase(); const nameB = b[1][0].employeeName.toLowerCase(); return nameA.localeCompare(nameB); }); // 转回目标格式的对象 const sortedGroupedData = Object.fromEntries(sortedEntries); console.log(sortedGroupedData);
预期输出
{ 21: [{employeeId:21,employeeName:"Avinash"},{employeeId:21,employeeName:"Avinash"}], 23: [{employeeId:23,employeeName:"Mamatha"}], 13: [{employeeId:13,employeeName:"Nova"}], 24: [{employeeId:24,employeeName:"Swetha"}] }
内容的提问来源于stack exchange,提问作者sra
相关产品推荐
相关产品推荐

