javascript - 当值相同时,Javascript按值和键对对象进行排序
问题描述
例如,我有一个 Javascript 对象
{ "g":-3, "e":2, "n":-3, "b": -3, "f": -5}
我需要按值对其进行排序,但如果值相同,则需要按键对其进行排序。
目标=>{"e":2, "b":-3, "g":-3, "n": -3, "f": -5}
谢谢你
解决方案
您可以先使用并根据您的标准将对象转换为数组数组。最后使用 .将排序后的二维数组转换回对象。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);
我很肯定有一种更有效的方法可以解决这个问题,但我个人认为这种方式非常可追溯。
推荐阅读
- javascript - 如何使用“xml2js”库在 xml 1.0 中转义“SOH”字符?
- python - 返回另一个数组中数字的提取索引
- python - 如何替换列表中的特定值?
- javascript - Formik 在有效字段更改后调度 Redux 操作
- deep-learning - 我可以在进行深度学习时使用来自不同来源的数据集吗
- php - 未捕获的 PHP 异常 Symfony\Component\HttpKernel\Exception\NotFoundHttpException:“没有为“GET /”找到路由
- c++ - 带有 std::tuple_cat 的模板实例化 decltype 和 declval
- javascript - 使用来自 JSON 对象的数据填充具有多条线的 Chart.Js 折线图
- javascript - 使用 Typescript 在 Webpack 编译期间动态导入模块
- r - 计算 R 中具有特定名称模式的列的行均值