最近我必須撰寫一個代碼,允許將人類可讀的數字記錄到控制臺(例如七十四,一百十二......)
我應該承認一切都很好,但它告訴我需要洗掉不必要的不??可見空間,當數十后沒有任何內容時,例如四十或七十或數百。應該回傳“兩百”而不是“兩百”
我知道這很愚蠢,因為它不會影響輸入量的樣子,但他們說我還是應該修復它。我非常依賴您的幫助,讓我在這里寫下代碼:
function helpReadable (number) {
let num = parseInt(number);
let out = "";
switch (parseInt(num / 100)%10) {
case 0 : break;
case 1 : out = "one hundred ";
break;
case 2 : out = "two hundred ";
break;
case 3 : out = "three hundred ";
break;
case 4 : out = "four hundred ";
break;
case 5 : out = "five hundred ";
break;
case 6 : out = "six hundred ";
break;
case 7 : out = "seven hundred ";
break;
case 8 : out = "eight hundred ";
break;
case 9 : out = "nine hundred ";
break;
}
let tens = parseInt(num / 10)%10;
let ones = num%10;
switch (tens) {
case 0 : break;
case 1 : switch (ones) {
case 0 : out = "ten";
break;
case 1 : out = "eleven";
break;
case 2 : out = "twelve";
break;
case 3 : out = "thirteen";
break;
case 4 : out = "fourteen";
break;
case 5 : out = "fifteen";
break;
case 6 : out = "sixteen";
break;
case 7 : out = "seventeen";
break;
case 8 : out = "eighteen";
break;
case 9 : out = "nineteen";
break;
}
break;
case 2 : out = "twenty ";
break;
case 3 : out = "thirty ";
break;
case 4 : out = "forty ";
break;
case 5 : out = "fifty ";
break;
case 6 : out = "sixty ";
break;
case 7 : out = "seventy ";
break;
case 8 : out = "eighty ";
break;
case 9 : out = "ninety ";
break;
}
if(tens != 1) {
switch (ones) {
case 0 : break;
case 1 : out = "one";
break;
case 2 : out = "two";
break;
case 3 : out = "three";
break;
case 4 : out = "four";
break;
case 5 : out = "five";
break;
case 6 : out = "six";
break;
case 7 : out = "seven";
break;
case 8 : out = "eight";
break;
case 9 : out = "nine";
break;
}
}
return out;
}
module.exports = function toReadable (number) {
if(number == 0) {
return "zero";
}
let str1 = number.toString(10);
if(str1.length < 4) {
return helpReadable(number);
} else if(str1.length < 7) {
let out = helpReadable(number / 1000) " thousand " helpReadable(number%1000);
return out;
} else {
let out = helpReadable(number / 1000000) " million " helpReadable(number/1000) ; if(helpReadable(number / 1000) != "") {out = ' thousand ' ;}
out = helpReadable(number%1000);
return out;
}
}
uj5u.com熱心網友回復:
用于trim()洗掉字串開頭和結尾的空格。例如:
console.log(toReadable(1234).trim());
或者,如果您必須在函式內部執行此操作,您可以trim()在每個return out或呼叫return helpReadable(...)。
uj5u.com熱心網友回復:
我的方式...
console.log( `--${toReadable( 2000000 )}--` )
console.log( `--${toReadable( 200000 )}--` )
console.log( `--${toReadable( 7000011 )}--` )
console.log( `--${toReadable( 23 )}--` )
console.log( `--${toReadable( 0 )}--` )
function toReadable(num)
{
const
mParts = ['', 'thousand', 'million', 'billion' ]
, arr = []
, numArr = []
, numberStr =
{ '0': 'zero', '10': 'ten', '100': 'hundred'
, '1': 'one', '11': 'eleven'
, '2': 'two', '12': 'twelve', '20' : 'twenty'
, '3': 'three', '13': 'thirteen', '30' : 'thirty'
, '4': 'four', '14': 'fourteen', '40' : 'forty'
, '5': 'five', '15': 'fifteen', '50' : 'fifty'
, '6': 'six', '16': 'sixteen', '60' : 'sixty'
, '7': 'seven', '17': 'seventeen', '70' : 'seventy'
, '8': 'eight', '18': 'eighteen', '80' : 'eighty'
, '9': 'nine', '19': 'nineteen', '90' : 'ninety'
}
, digits3 = val =>
{
let
vTen = val % 100
, valStr = val.toString(10)
, res = []
;
if (val > 100) res.push( numberStr[valStr[0]], numberStr[100] )
if (val === 0) res.push( numberStr['0'] )
else if (vTen < 20)
{ if (vTen) res.push( numberStr[vTen] ) }
else
{
let n = vTen % 10;
vTen -= n;
res.push( numberStr[vTen] )
if (n>0) res.push( numberStr[n] )
}
return res.join(' ')
}
let n3d;
do{
n3d = num % 1000
arr.push( n3d )
num -= n3d
num /= 1000
}
while(num > 0)
for (let i=arr.length;i--;)
{
if (i>0)
{
if (arr[i] > 0) numArr.push(digits3(arr[i]), mParts[i] )
}
else if (arr.length===1 || arr[i] > 0 )
numArr.push( digits3(arr[i]) )
}
return numArr.join(' ')
}
.as-console-wrapper {max-height: 100%!important;top:0 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416597.html
標籤:
