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

仅使用sort函数按指定数组顺序对目标数组元素排序实现问题

数组自定义排序实现

需求说明

现有两个数组parameter和order,需要对parameter排序满足以下规则:

  • 所有在order中存在的元素,优先按照order里的先后顺序排列
  • 剩余未出现在order中的元素,按词法顺序排在后面
  • 排序过程中不能直接使用order数组参与逻辑判断,仅允许使用sort函数实现

实现方案

提前把order数组的元素和对应索引存入Map对象作为权重映射,排序过程中仅通过该Map判断优先级,避免直接操作order数组,完全符合要求。
具体代码如下:

let parameter = ['Door', 'fjjfh','Container Number','jdjfr', 'Cases', 'hello', "hi", 'Items/sort']
let order = ['Door', 'Container Number', 'Cases', 'Items/sort']

// 提前生成权重映射,排序过程不再使用order数组
const weightMap = new Map()
order.forEach((item, index) => weightMap.set(item, index))

// 仅使用sort函数完成所有排序逻辑
parameter.sort((a, b) => {
  const weightA = weightMap.has(a) ? weightMap.get(a) : Infinity
  const weightB = weightMap.has(b) ? weightMap.get(b) : Infinity
  // 两个元素都在order内,按权重升序排列
  if (weightA !== Infinity && weightB !== Infinity) {
    return weightA - weightB
  }
  // 单个元素在order内,排在前面
  if (weightA !== Infinity) return -1
  if (weightB !== Infinity) return 1
  // 两个元素都不在order内,按词法排序
  return a.localeCompare(b)
})

console.log(parameter)
// 输出结果:['Door', 'Container Number', 'Cases', 'Items/sort','fjjfh','hello','hi','jdjfr']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:06:04