使用一个拼音库,然后将拼音库转换成自己需要的格式

做一个学做普通的app,里面有这个加声调的需求

  var toneMap = {
            "ā": "1",
            "á": "2",
            "ǎ": "3",
            "à": "4",
            "ō": "1",
            "ó": "2",
            "ǒ": "3",
            "ò": "4",
            "ē": "1",
            "é": "2",
            "ě": "3",
            "è": "4",
            "ī": "1",
            "í": "2",
            "ǐ": "3",
            "ì": "4",
            "ū": "1",
            "ú": "2",
            "ǔ": "3",
            "ù": "4",
            "ü": "0",
            "ǖ": "1",
            "ǘ": "2",
            "ǚ": "3",
            "ǜ": "4",
            "ń": "2",
            "ň": "3",
            "": "2"
        };
        var toneMap1 = {
            "ā": "a",
            "á": "a",
            "ǎ": "a",
            "à": "a",
            "ō": "o",
            "ó": "o",
            "ǒ": "o",
            "ò": "o",
            "ē": "e",
            "é": "e",
            "ě": "e",
            "è": "e",
            "ī": "i",
            "í": "i",
            "ǐ": "i",
            "ì": "i",
            "ū": "u",
            "ú": "u",
            "ǔ": "u",
            "ù": "u",
            "ü": "u",
            "ǖ": "u",
            "ǘ": "u",
            "ǚ": "u",
            "ǜ": "u",
            "ń": "n",
            "ň": "n",
            "": "m"
        };

最主要的就是根据这两个东西进行转化,过程很简单,直接留个代码方便以后查看

//pinyin_dict_withtone拼音库文件            
var temp = pinyin_dict_withtone.split(',');
            console.log(temp)
            let newArr = []
            for (var i = 0; i < temp.length; i++) {
                // 这段代码耗时28毫秒左右,对性能影响不大,所以一次性处理完毕
                // dict.withtone[String.fromCharCode(i + 19968)] = temp[i]; // 这里先不进行split(' '),因为一次性循环2万次split比较消耗性能
                if (temp[i].indexOf(" ") == "-1") {
                    if(newArr.indexOf(temp[i])=='-1'){
                        newArr.push(temp[i])
                    }

            }
            console.log(newArr)
        }

        document.write(newArr.sort())
        console.log(newArr)
        let objnew ={}
        newArr.forEach(item => {
            for (let i = 0; i < item.length; i++) {
                if (toneMap[item[i]]) {
                    let key= ''
                    let key1= ''
                    item[i] = toneMap1[item[i]]
                    key1 =item + "" + toneMap[item[i]]
                    key= key1.replace(item[i],toneMap1[item[i]])
                    objnew[key]  = item
                }
            }
        })
        console.log(objnew)

然后最后就是文件的永久保存,应为循环量比较大,所以选择的是生成一个json库,然后直接拿来用,最后就是js保存文件的方法

  function fake_click(obj) {
            var ev = document.createEvent("MouseEvents");
            ev.initMouseEvent(
                "click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null
            );
            obj.dispatchEvent(ev);
        }

        function download(name, data) {
            var urlObject = window.URL || window.webkitURL || window;

            var downloadData = new Blob([data]);

            var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
            save_link.href = urlObject.createObjectURL(downloadData);
            save_link.download = name;
            fake_click(save_link);
        }
        //调用方法
        download("save.json", JSON.stringify(objnew));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值