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

如何按嵌套orderId参数值对JavaScript对象的属性进行排序

你只需要修改sort方法的排序规则,让它对比两个键对应对象的orderId字段值即可,修改后的函数如下:

function sortObject(obj) {
  return Object.keys(obj)
    .sort((a, b) => obj[a].orderId - obj[b].orderId)
    .reduce((acc, key) => {
      acc[key] = obj[key];
      return acc;
    }, {});
}

说明

  • 原生sort()不传参时默认会将元素转为字符串,按Unicode编码顺序排序,因此原本的实现是按键名字符串排序
  • 传入的自定义比较函数会根据两个键对应对象的orderId数值差决定排序顺序:差为负数时前者排在前面,正数时后者排在前面,刚好实现按orderId从小到大排序
  • ES6及之后的标准中,普通对象的字符串键会严格按照插入顺序保存,因此reduce遍历排序后的键插入得到的新对象就符合你预期的顺序

如果需要兼容部分子项不存在orderId的场景,可以给orderId加兜底默认值,比如将排序规则改为:

.sort((a, b) => (obj[a].orderId ?? Infinity) - (obj[b].orderId ?? Infinity))

这样没有orderId字段的子项会自动排到末尾。

内容的提问来源于stack exchange,提问作者The Old County

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 03:15:02