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

做一个学做普通的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));

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页