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

如何使用Lodash按timeFrom的hour和minute字段对对象数组排序?

问题

我拥有一个包含如下数据的对象数组:

items = [
   {
     ....someFields
     timeFrom: {
       hour: 17,
       minute: 15
     }
   },
   {
    ....someFields
     timeFrom: {
       hour: 12,
       minute: 32
     }
   },
   {
    ....someFields
     timeFrom: {
       hour: 17,
       minute: 15
     }
   },
   {
    ....someFields
     timeFrom: {
       hour: 17,
       minute: 35
     }
   }
];

_.sortBy(items, o => o.timeFrom.hour);

目前我仅通过上述代码按timeFrom的hour字段排序,请问如何使用Lodash同时按timeFrom的hour和minute字段进行排序?

解决方案

Lodash的_.sortBy方法支持传入排序依据的数组,数组中的元素按优先级从高到低排列,就能实现多字段排序。针对你的场景,只需要将hour和minute的路径(或对应的取值函数)依次放入数组即可:

方式一:使用字段路径字符串

const sortedItems = _.sortBy(items, ['timeFrom.hour', 'timeFrom.minute']);

方式二:使用取值函数数组

const sortedItems = _.sortBy(items, [
  item => item.timeFrom.hour,
  item => item.timeFrom.minute
]);

两种方式效果一致:先按hour升序排序,当两个元素的hour相同时,再按minute升序排序,最终得到符合预期的排序结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:52:41