首页 > 解决方案 > 当值相同时,Javascript按值和键对对象进行排序

问题描述

例如,我有一个 Javascript 对象

{ "g":-3, "e":2, "n":-3, "b": -3, "f": -5}

我需要按值对其进行排序,但如果值相同,则需要按键对其进行排序。

目标=>{"e":2, "b":-3, "g":-3, "n": -3, "f": -5}

谢谢你

标签: javascriptloopssortingobject

解决方案


您可以先使用并根据您的标准对象转换为数组数组。最后使用 .排序后的二维数组转换回对象。Object.entries()Array.prototype.sort()Object.fromEntries()

const data = { g: -3, e: 2, n: -3, b: -3, f: -5 };

const result = Object.fromEntries(
  Object.entries(data).sort((a, b) =>
    b[1] - a[1] !== 0 ? b[1] - a[1] : a[0].localeCompare(b[0])
  )
);

console.log(result);

我很肯定有一种更有效的方法可以解决这个问题,但我个人认为这种方式非常可追溯。


推荐阅读