美文网首页
js -- 数字转文字

js -- 数字转文字

作者: 反者道之动001 | 来源:发表于2018-06-05 09:34 被阅读43次

金额转换, 数字转文字

没事写一个, 完整代码如下:

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--

相关文章

网友评论

      本文标题:js -- 数字转文字

      本文链接:https://www.haomeiwen.com/subject/spxpsftx.html