You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按年龄升序对给定的人员对象数据进行排序?

按年龄升序排序人员对象数据的解决方案

你当前的代码无法生效,核心原因是:sort()是JavaScript数组的专属方法,而你定义的people是一个普通对象,不是数组,直接调用people.sort()会报错。

下面是两种可行的解决方案:

方案1:仅排序人员数据(不保留原编号键)

这种方式会得到一个按年龄升序排列的人员对象数组,适合不需要原编号的场景:

const people = {
'1' : {'name' : 'Rohan', 'age' : 24},
'2' : {'name' : 'Ujjwal', 'age' : 27},
'3' : {'name' : 'Tara', 'age' : 18},
'4' : {'name' : 'Sagar', 'age' : 20},
'5' : {'name' : 'Kumar', 'age' : 21}
};

// 提取对象中的所有人员数据转为数组,再按年龄升序排序
const sortedPeople = Object.values(people).sort((a, b) => a.age - b.age);

console.table(sortedPeople);

方案2:保留原编号键的排序

如果需要保留原有的'1'、'2'这类编号键,可以先将对象转为键值对数组,排序后再转回对象:

const people = {
'1' : {'name' : 'Rohan', 'age' : 24},
'2' : {'name' : 'Ujjwal', 'age' : 27},
'3' : {'name' : 'Tara', 'age' : 18},
'4' : {'name' : 'Sagar', 'age' : 20},
'5' : {'name' : 'Kumar', 'age' : 21}
};

// 将对象转为[key, value]格式的数组,按年龄排序
const sortedEntries = Object.entries(people).sort(([, personA], [, personB]) => personA.age - personB.age);

// 转回对象(ES6+环境下会保留排序后的插入顺序)
const sortedPeopleWithKeys = Object.fromEntries(sortedEntries);

console.table(sortedPeopleWithKeys);

关键逻辑说明

  • Object.values(people):提取对象中所有的人员数据,返回一个人员对象数组。
  • sort((a, b) => a.age - b.age):升序排序的核心逻辑:若a.age - b.age为负数,a排在b前面;为正数则b在前;相等则保持原有顺序。
  • Object.entries()和Object.fromEntries():配合使用完成对象键值对的排序与重组,保留原编号信息。

内容的提问来源于stack exchange,提问作者Sanjeet Kotarya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:06:23