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

如何用a.sort()对属性名各异的数组元素按值从小到大排序?

用Array.sort()实现对象数组按值从小到大排序

嘿,这个需求很好解决,核心就是给sort()方法传一个自定义的比较函数就行——毕竟默认的sort()是按字符串Unicode码点排序的,没法直接处理这种单个键值对的对象数组。

具体实现代码

const a = [{"a": 1}, {"b": 0}, {"w": -4}];

// 自定义比较函数,按对象的值从小到大排序
a.sort((objA, objB) => {
    // 提取每个对象的唯一值(因为每个对象只有一个键值对)
    const valueA = Object.values(objA)[0];
    const valueB = Object.values(objB)[0];
    // 返回差值实现升序排序
    return valueA - valueB;
});

console.log(a); // 输出结果: [{"w": -4}, {"b": 0}, {"a": 1}]

代码逻辑说明

  • Object.values(obj)[0]:因为题目里每个对象都只有一个键值对,所以用Object.values()取出值数组后,直接取第一个元素就是我们要用来排序的数值。
  • 比较函数返回valueA - valueB:当结果为负数时,objA会排在objB前面;结果为0时顺序不变;结果为正数时objB排在objA前面,刚好满足**从小到大(升序)**的排序要求。

如果后续你的对象可能出现多个键的情况,只需要调整取值逻辑(比如指定固定键名)就行,但针对当前题目里的场景,上面的代码完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:57:29