JS 數字金額化的4中方法
阿新 • • 發佈:2020-11-05
四種方法
/** * 數字金額化: * @param {*} num * 入參: 數字,例如:459087578 * 出參:字串並逗號分割,例如:89,459,087,578 */ /** * 方法一 */ function num2amount1(num){ num += ''; let ans = ''; const len = num.length; for(let i = 0; i < len; i++) { i % 3 === 1 ? ans = num[len-i-1] + ',' + ans : ans = num[len-i-1] + ans; } return ans; } /** * 方法二 * @param {*} num */ function num2amount2(num){ return (num).toLocaleString('en-US'); } /** * 方法三 * @param {*} num */ function num2amount3(num){ return (num+'').replace(/\B(?=(\d{3})+(?!\d))/g, ','); } /** * 方法四 * @param {*} num */ function num2amount4(num){ return (num+'').split('').reduceRight((pre, curr, index) => index % 3 === 1 ? curr + ',' + pre : curr + pre); } // 測試 let num = 89787667766876; let ans1 = num2amount1(num); let ans2 = num2amount2(num); let ans3 = num2amount3(num); let ans4 = num2amount4(num); console.log(ans1);// 89,787,667,766,876 console.log(ans2);// 89,787,667,766,876 console.log(ans3);// 89,787,667,766,876 console.log(ans4);// 89,787,667,766,876
現在看起來基本沒毛病,可是能實現是一回事,能不能來出來溜溜,提供給其他人使用又是另外一回事。真實的情況很複雜多變,很多情況都需要考慮到。下面列出幾個測試情況,開發也要學會弄測試用例,用測試的思維做開發,用產品的思維做開發。如果我們對num2amount函式的入參弄些不規則的值,例如如下情況。
- 情況一:正常情況,正整數,如8887677677566
- 情況二:非數值型別,如布林值(true),字串('1233456333'),物件({name:123})等
- 情況三:負數,如-22221
- 情況四:小數,如89877768866.098
- 情況六:大數,如1000000000000000000000000000000
- 情況七:邊界情況,如undefine, null