如何从JSON对象中按属性值提取前N个最大项并排序
实现方案(以JavaScript为例)
通用逻辑不管用什么编程语言都可以复用:
- 提取原对象的所有键值对,转为可排序的列表结构
- 按属性值做降序排序,值相同的项相对顺序不做强制要求,符合你的示例输出规则
- 截取排序后列表的前5项
- 将筛选后的列表重新组装为对象结构
可直接运行的代码示例
function getTop5MaxItems(originObj) { // 转为[键, 值]二维数组 const keyValueList = Object.entries(originObj); // 按值降序排序 keyValueList.sort((a, b) => b[1] - a[1]); // 截取前5项 const top5List = keyValueList.slice(0, 5); // 转回对象 return Object.fromEntries(top5List); } // 测试 const inputObj = {A : 1, B : 5, C : 1, D : 3, E: 4, F: 4, G: 2}; console.log(getTop5MaxItems(inputObj)); // 输出结果:{ B: 5, E: 4, F: 4, D: 3, G: 2 }
低版本环境兼容写法
如果你的运行环境不支持ES2019新增的Object.fromEntries方法,可以用遍历的方式组装结果:
function getTop5MaxItems(originObj) { const keyValueList = Object.entries(originObj); keyValueList.sort((a, b) => b[1] - a[1]); const top5List = keyValueList.slice(0, 5); // 手动组装对象 const result = {}; top5List.forEach(item => { result[item[0]] = item[1]; }); return result; }
内容的提问来源于stack exchange,提问作者Trung Cr
相关产品推荐
相关产品推荐

