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

如何实现Javascript对象按值排序,值相等时按键排序

JavaScript 对象按属性值、属性名排序实现方案

实现逻辑如下:

  • 首先提取对象的所有属性键生成数组
  • 自定义排序规则:优先按属性值降序排列,属性值相同时按键的字典序升序排列
  • 按排序后的键顺序插入新对象,得到最终的有序对象

完整代码示例:

// 原始对象
const originalObj = { "g":-3, "e":2, "n":-3, "b": -3, "f": -5 };

// 对键进行自定义排序
const sortedKeys = Object.keys(originalObj).sort((keyA, keyB) => {
  const valA = originalObj[keyA];
  const valB = originalObj[keyB];
  // 属性值不同时按值降序排列
  if (valA !== valB) {
    return valB - valA;
  }
  // 属性值相同时按键的字典序升序排列
  return keyA.localeCompare(keyB);
});

// 生成有序新对象
const sortedObj = {};
sortedKeys.forEach(key => {
  sortedObj[key] = originalObj[key];
});

console.log(sortedObj);
// 输出结果:{ e: 2, b: -3, g: -3, n: -3, f: -5 }

注意:该实现依赖ES6+规范的对象属性顺序规则,所有现代浏览器、Node.js v6+版本都支持该特性,字符串类型的属性会按插入顺序保留排列顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 03:00:00