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

如何按照另一个数组中定义的order顺序对目标数组进行排序?

实现方案

实现思路

  • 先将status数组转换为状态名对应order值的映射表,避免排序时重复遍历status数组,提升查询效率
  • 自定义sort方法的排序规则:优先按status对应的order值升序排列,同状态下按price升序排列

完整代码

// 原始数组
const status = [
  {title: 'pending', order: 1},
  {title: 'success', order: 2}
]
const task = [
  {status: 'success', price: 100},
  {status: 'success', price: 150},
  {status: 'pending', price: 100}, 
  {status: 'success', price: 300}
]

// 生成状态排序权重映射
const statusOrderMap = Object.fromEntries(status.map(item => [item.title, item.order]))

// 执行排序
task.sort((a, b) => {
  const orderGap = statusOrderMap[a.status] - statusOrderMap[b.status]
  // 状态权重不同时按权重排序
  if (orderGap !== 0) return orderGap
  // 状态权重相同时按价格升序
  return a.price - b.price
})

执行后task数组的输出结果和你要求的完全一致。如果后续需要调整状态的排序优先级,只需要修改status数组里对应状态的order值即可,排序逻辑不需要做任何改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:06:03