当前位置:首页 > JavaScript

js实现中文数字排序

2026-01-31 05:42:46JavaScript

中文数字排序实现方法

在JavaScript中实现中文数字排序需要将中文数字转换为阿拉伯数字后再进行比较。以下是具体实现步骤:

创建中文数字映射表

建立中文数字与阿拉伯数字的对应关系,包括单位和零的情况:

const chineseNumMap = {
  '零': 0, '一': 1, '二': 2, '三': 3, '四': 4,
  '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,
  '十': 10, '百': 100, '千': 1000, '万': 10000, '亿': 100000000
};

中文转阿拉伯数字函数

实现转换函数处理复合中文数字(如"二百五十六"):

js实现中文数字排序

function chineseToNumber(chineseStr) {
  let total = 0;
  let currentVal = 0;
  let previousUnit = 0;

  for (let i = 0; i < chineseStr.length; i++) {
    const char = chineseStr[i];
    const num = chineseNumMap[char];

    if (num === undefined) return NaN; // 非数字字符

    if (num < 10) {
      currentVal = num;
    } else if (num >= 10) {
      if (currentVal === 0) currentVal = 1;
      currentVal *= num;

      if (num > previousUnit) {
        total += currentVal;
        currentVal = 0;
      } else {
        total += currentVal;
        currentVal = 0;
      }
      previousUnit = num;
    }
  }

  return total + currentVal;
}

排序比较函数

创建可用于Array.sort()的比较函数:

function chineseNumberCompare(a, b) {
  const numA = chineseToNumber(a);
  const numB = chineseToNumber(b);
  return numA - numB;
}

实际使用示例

对包含中文数字的数组进行排序:

js实现中文数字排序

const chineseNumbers = ['五', '十二', '三', '一百', '二十', '九'];
chineseNumbers.sort(chineseNumberCompare);
console.log(chineseNumbers); 
// 输出: ["三", "五", "九", "十二", "二十", "一百"]

处理复杂情况

对于"两"、"廿"等特殊表达,需扩展映射表:

Object.assign(chineseNumMap, {
  '两': 2, '廿': 20, '卅': 30, '卌': 40
});

性能优化建议

对于大量数据排序,可预先计算并缓存转换结果:

function optimizedSort(arr) {
  return arr
    .map(item => ({ original: item, value: chineseToNumber(item) }))
    .sort((a, b) => a.value - b.value)
    .map(item => item.original);
}

注意事项

  1. 该实现不支持小数中文数字
  2. 超大字面量(如"一兆")需要扩展单位映射
  3. 混合字符串(如"第1章")需要额外处理
  4. 繁体中文需要单独映射表

完整实现应包含错误处理和对各种边界情况的考虑。

标签: 中文数字
分享给朋友:

相关文章

jquery 中文

jquery 中文

以下是关于 jQuery 中文资源的整理,涵盖学习文档、社区和实用工具: jQuery 官方中文文档 jQuery 官方提供了部分中文文档,可通过官网切换语言或访问中文翻译版本。内容涵盖基础语法、A…

中文elementui

中文elementui

Element UI 简介 Element UI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如按钮、表单、表格等),支持响应式布局和主题定制,适…

vue实现数字奇偶

vue实现数字奇偶

判断数字奇偶的方法 在Vue中实现数字奇偶判断,可以通过计算属性或方法来实现。以下是几种常见的方法: 使用计算属性 在Vue组件中定义一个计算属性,根据输入的数字返回奇偶状态。 computed…

vue 实现数字跳动

vue 实现数字跳动

Vue 实现数字跳动效果 数字跳动效果可以通过 Vue 的过渡动画或第三方库实现。以下是几种常见方法: 使用 Vue Transition 和 CSS 动画 通过 Vue 的 <transit…

vue 实现数字求和

vue 实现数字求和

Vue 实现数字求和的方法 在 Vue 中实现数字求和可以通过多种方式完成,以下是几种常见的实现方法: 使用计算属性(Computed) 计算属性适合处理响应式数据的求和逻辑,当依赖的数据变化时,会…

vue实现数字跳动

vue实现数字跳动

Vue 实现数字跳动效果 数字跳动(数字滚动动画)是一种常见的交互效果,通常用于展示统计数据、计数器等场景。以下是几种实现方式: 方法一:使用 transition 和 v-for 通过遍历数字字符…