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

如何修正排序函数,实现字符型code在前、纯数字code在后的排序?

修正排序函数实现指定规则

原排序逻辑是按字符串的Unicode编码顺序比较,数字字符的编码值比字母小,所以纯数字的code会排在字母开头的code前面,不符合你的需求。以下是修正后的排序函数:

const sortData = (data) => {
  return data.sort((a, b) => {
    // 判断code是否为纯数字
    const isAPureNum = /^\d+$/.test(a.code);
    const isBPureNum = /^\d+$/.test(b.code);

    // 纯数字和非纯数字的优先级判断:非纯数字在前
    if (isAPureNum && !isBPureNum) {
      return 1;
    }
    if (!isAPureNum && isBPureNum) {
      return -1;
    }

    // 同类型的按字符串自然顺序排序
    return a.code.localeCompare(b.code);
  });
};

const myObj = [{code: 'b1111'}, {code: '2222'}, {code: 'a1111'}];
console.log(sortData(myObj));

逻辑说明

  • 用正则表达式/^\d+$/判断code是否为纯数字(从开头到结尾全由数字组成)
  • 当两个元素类型不同时,强制让非纯数字的元素排在前面
  • 当两个元素类型相同时,使用localeCompare方法按字符串自然顺序排序(比直接用</>更稳定,支持多语言场景)

运行后会得到你期望的结果:

[ { code: 'a1111' }, { code: 'b1111' }, { code: '2222' } ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:01:03