js实现中文数字排序
中文数字排序的实现方法
在JavaScript中,对中文数字进行排序需要将中文数字转换为阿拉伯数字,然后进行比较。以下是实现步骤:
创建中文数字映射表
建立一个中文数字与阿拉伯数字的映射关系:

const chineseNumMap = {
'零': 0,
'一': 1,
'二': 2,
'两': 2,
'三': 3,
'四': 4,
'五': 5,
'六': 6,
'七': 7,
'八': 8,
'九': 9,
'十': 10,
'百': 100,
'千': 1000,
'万': 10000,
'亿': 100000000
};
中文数字转阿拉伯数字
实现一个转换函数处理中文数字:

function chineseToNumber(chineseStr) {
let total = 0;
let current = 0;
let previous = 0;
for (let i = 0; i < chineseStr.length; i++) {
const char = chineseStr[i];
const num = chineseNumMap[char];
if (num === undefined) continue;
if (num < 10) {
current = num;
} else {
if (current === 0) current = 1;
total += current * num;
current = 0;
}
previous = num;
}
return total + current;
}
实现排序比较函数
创建用于Array.sort()的比较函数:
function compareChineseNumbers(a, b) {
const numA = chineseToNumber(a);
const numB = chineseToNumber(b);
return numA - numB;
}
使用示例
const chineseNumbers = ['三', '一', '十', '五', '二'];
chineseNumbers.sort(compareChineseNumbers);
console.log(chineseNumbers); // ['一', '二', '三', '五', '十']
处理复杂中文数字
对于包含"百"、"千"、"万"等单位的复杂中文数字,上述转换函数同样适用:
const complexNumbers = ['一百', '二十', '三千', '五万', '十二'];
complexNumbers.sort(compareChineseNumbers);
console.log(complexNumbers); // ['十二', '二十', '一百', '三千', '五万']
注意事项
- 映射表可根据需要扩展,支持更多中文数字单位
- 对于不规范的中文数字输入,可能需要添加校验逻辑
- 该方法也适用于中文数字与阿拉伯数字混合的排序场景
这种方法通过将中文数字转换为统一的阿拉伯数字表示,再利用JavaScript原生的数字比较功能实现排序,既保持了代码简洁性又确保了排序准确性。






