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

JavaScript按toothNumber字段排序JSON数组结果不符合预期如何解决

问题根因

你当前使用的排序逻辑直接对字符串类型的toothNumber做减法运算,当值包含逗号时会转为NaN,导致排序规则失效,无法按预期的前缀数字优先级排序。

解决方案

你可以自定义排序规则,优先取toothNumber的第一个数字段做数值比较,同数值的短字符串排在前面即可:

json.sort(function(a, b) {
    // 处理空值,空值排最前
    if (a.toothNumber === '') return -1;
    if (b.toothNumber === '') return 1;
    
    // 提取第一个数字段转数值
    const numA = parseInt(a.toothNumber.split(',')[0], 10);
    const numB = parseInt(b.toothNumber.split(',')[0], 10);
    
    // 数值不同按数值升序
    if (numA !== numB) {
        return numA - numB;
    }
    // 数值相同按字符串长度升序,短值在前,实现"01"排在"01,32"前的效果
    return a.toothNumber.length - b.toothNumber.length;
});

上述代码运行后得到的排序结果和你预期的完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:24:03