js -- 數字轉文字

weixin_34054866發表於2018-06-05

金額轉換, 數字轉文字

沒事寫一個, 完整程式碼如下:

clear()
{
    let nuit = ['十', '百', '千', '萬', '十萬', '百萬', '千萬']
    const ns = ["零","一","二","三", "四", "五", "六", "七", "八","九"]

    let addNuitList = ['億', '兆'] // 兆後面是京
    addNuitList.forEach(e => {
        eval(`
            nuit.push('${e}')
            nuit.forEach(e => {
                e != '${e}' && nuit.push(e + '${e}')
            })
        `)
    })  
    const addNuit = split => {
        let newarr = []
        let _nuit = nuit.slice(0, split.length - 1)
        _nuit.reverse()
        split.forEach((item, index, arr) => {
            if(item == ns[0]){
                _nuit[index] = ''
            }
            if(item == '一'){
                if(_nuit[index] != '十' && _nuit[index][0] == '十')
                    item = ''
            }
            Boolean(!_nuit[index])
                ? newarr.push(item)
                : newarr.push(item, _nuit[index])
        })
        return newarr
    }
    const numToStr = num => (num += '', num.split(''))
    const setNuitF = key => v => {
        const sp = v.split(key)
        if(sp.length >= 2){
            sp[sp.length - 1] = key + sp[sp.length - 1]
        }
        return sp.join('')
    }
    const setNuit = v => {
        return setNuitF('萬')(
                    setNuitF('億')(v)
                )
    }
    const nonil = v => {
        const len = v.length
        return v[len - 1] == ns[0] 
            ? nonil(v.substring(0, len - 1))
            : v
    }
    const priceTostr = num => num == 0 
        ? ns[0]
        : nonil(
            setNuit(
                addNuit(
                    numToStr(num).map(e => ns[e])
                ).join('')
            )
        )
    console.log(priceTostr(0))
}

上面程式碼用到了eval , 小程式, native等是不支援得, 可以取出來哈。

--END--

相關文章