js有没有简单的方法实现数组转换?

比如数组[1,2,3,4],通过转换变成[一,二,三,四],1和一对应,2和二对应,类推。

阅读 3.9k
6 个回答

现代浏览器其实是提供本地化功能的,比如

(1234567890).toLocaleString('zh-Hans-CN-u-nu-hanidec',{useGrouping:false})
//=>"一二三四五六七八九〇"

所以只针对现代浏览器的,这样最简单

[1,2,3,4].map(i=>i.toLocaleString('zh-Hans-CN-u-nu-hanidec',{useGrouping:false}))
//["一", "二", "三", "四"]
function translateArray(arr1) {
  var arr2 = [];
  for(var i = 0; i < arr1.length; i++) {
    var str = arr1[i].toString();
    var newStr = '';
    for(var j = 0; j < str.length; j++) {
      switch(str[j]) {
        case '1': newStr += '一'; break;
        case '2': newStr += '二'; break;
        ...
        default: newStr += '零';
      }
    }
    arr2.push(newStr);
  }
  return arr2;
}

十以内可以这样(超过十的话如“11”变成了“一一”),当然也可以自行扩充(需要加些位数判断)。

var a = [1,2,3,4];

var b = ["一","二","三","四"];
var c = {};

for( var i = 0 ; i < a.length; i++ ) {
    c["_" + a[i]] = b[i];
}

c["_1"] == "一";

如果是希望将阿拉伯数字转换成汉字表达,那么首先可以将0-9做映射(零,一,二...九),然后加上单位“十,百,千,万...”,拆分阿拉伯数字按照读法规则进行转换就可以~~

这样就可以了~

zhnum="〇一二三四五六七八九"
"〇一二三四五六七八九"
zhnum[0]
"〇"
zhnum[3]
"三"
zhnum[9]
"九"

这种一般是采用查表法,做一个转换对应表,然后查表替换。
如果是期望一般数字转换为中文字表示法的话,网上有一些函数包可以实现(自己也可以实现,不过真正要写好还是有一定难度的)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题