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

如何按[1,'A','a']规则对含fName的对象数组排序?

实现对象数组按指定规则排序

问题场景

原始数组:

var arr = [{ fName: "a" }, { fName: 1 }, { fName: "A" }];

需要将其排序为指定顺序:

var arr = [{ fName: 1 }, { fName: "A" }, { fName: "a" }];

排序规则为按[1, 'A', 'a']的优先级排列。

解决方案

通过自定义Array.sort()的比较逻辑实现,核心是给每个目标值分配固定优先级权重:

// 定义排序优先级映射,数字越小越靠前
const sortPriority = {
  1: 0,
  'A': 1,
  'a': 2
};

// 执行排序
arr.sort((itemA, itemB) => {
  // 获取两个元素的优先级权重,未定义的元素默认排到最后
  const weightA = sortPriority[itemA.fName] ?? Infinity;
  const weightB = sortPriority[itemB.fName] ?? Infinity;
  return weightA - weightB;
});

逻辑说明

  1. 先创建一个映射对象sortPriority,把需要排序的fName值对应到不同的优先级数字,数字越小排序越靠前;
  2. 在sort()的比较函数中,取出两个元素的fName对应的权重,用权重差值决定排序顺序;
  3. 用?? Infinity处理不在规则内的元素,确保这类元素自动排到数组末尾。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:10:36