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

按数值(value)排序JavaScript对象,再按字符串(key)字母序排序

JavaScript对象按值降序、键字母序升序排序方案

你只需要修改sort的回调函数,在值相等时加入键的字母顺序比较逻辑即可,完整实现代码如下:

const words = {
  "be": 3,
  "a": 5,
  "an": 3
};

// 转换为键值对数组并排序
const sortedEntries = Object.entries(words).sort(([keyA, valA], [keyB, valB]) => {
  // 优先按value降序排列
  if (valB !== valA) {
    return valB - valA;
  }
  // value相同时,按key的字母升序排列
  return keyA.localeCompare(keyB);
});

// 将排序后的数组转回对象
const sortedWords = Object.fromEntries(sortedEntries);

console.log(sortedWords);
// 输出结果:
// { 
//   "a": 5,
//   "an": 3, 
//   "be": 3
// }

代码说明

  1. 对象转数组:用Object.entries()把原对象转换成[键, 值]格式的数组,因为JavaScript对象本身无法直接排序,必须借助数组的sort方法。
  2. 排序逻辑:
    • 先比较两个项的value,如果不相等,用valB - valA实现降序排列(大的值排在前面)。
    • 如果value相等,调用keyA.localeCompare(keyB),这个方法会按照自然字母顺序比较字符串,返回的结果刚好适配sort方法的要求,实现键的升序排列。
  3. 数组转对象:用Object.fromEntries()把排序后的键值对数组转回对象,ES6及以上环境会保留数组的插入顺序,所以最终对象的键顺序符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:12:26