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

JavaScript中如何对包含字典对象的数组按指定属性排序

实现对象数组按指定属性数值排序的方案

JS 内置的Array.sort()方法支持传入自定义比较函数,你只需要在比较逻辑中读取对象的num属性做数值比较即可,完整实现代码如下:

const originArr = [
  {num: 0, otherdatas: 'blah'},
  {num: 5, otherdatas: 'blah'},
  {num: 3, otherdatas: 'blah'},
  {num: 8, otherdatas: 'blah'},
  {num: 9, otherdatas: 'blah'},
  {num: 4, otherdatas: 'blah'}
];

// 按num属性升序排序
originArr.sort((itemA, itemB) => itemA.num - itemB.num);

原理解释

  • 传入sort的比较函数接收两个参数,对应参与比较的两个数组元素
  • 函数返回值小于0时,第一个参数会排在第二个参数前面;返回值大于0时,第二个参数排在前面;等于0时二者相对顺序不变
  • 直接对两个元素的num属性做减法,就能得到符合要求的返回值,实现按数值从小到大排序。如果需要从大到小降序排列,把返回值改成itemB.num - itemA.num即可。

注意事项

Array.sort()是原地排序,执行后会直接修改原数组。如果需要保留原始数组不被改动,可以先拷贝一份再执行排序:

// 扩展运算符拷贝数组,不会修改原originArr
const sortedArr = [...originArr].sort((a, b) => a.num - b.num);

如果你的num属性可能存在字符串格式的数字(比如"3"),可以在比较时先转成数值类型避免异常:

originArr.sort((a, b) => Number(a.num) - Number(b.num));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:45:02