如何按子键age的值升序排序JSON对象的键为数组?
按子键"age"升序排序JSON键的实现示例
这里用JavaScript实现需求,核心思路是先提取对象的键数组,再根据每个键对应的age值(转成数字后)进行排序:
// 给定的JSON对象 const people = { "p1": { "name": "*****", "age": "18" }, "p2": { "name": "*****", "age": "14" }, "p3": { "name": "*****", "age": "24" } }; // 提取键并按age升序排序 const sortedKeys = Object.keys(people).sort((keyA, keyB) => { // 注意age是字符串类型,必须转为数字再比较 const ageA = Number(people[keyA].age); const ageB = Number(people[keyB].age); return ageA - ageB; // 减法实现升序,若要降序则反过来用ageB - ageA }); console.log(sortedKeys); // 输出结果:["p2", "p1", "p3"]
关键步骤说明
Object.keys(people):获取目标对象的所有键,得到初始数组["p1", "p2", "p3"]sort()方法的比较函数:- 将每个键对应的
age字符串转为数字,避免字符串排序的错误(比如"18"会被误判为比"24"大的情况) - 通过
ageA - ageB的结果控制排序顺序:结果为负时keyA排在keyB前,实现升序;若需要降序,改为ageB - ageA即可
- 将每个键对应的
内容的提问来源于stack exchange,提问作者Project Yuri
相关产品推荐
相关产品推荐

