Как получить преобразованное в текст число но в стиле Vanilla js?
Как получить преобразованное в текст число но в стиле Vanilla js?
const numb900 = [100, 200, 300, 400, 500, 600, 700, 800, 900]; const numb90 = [10, 20, 30, 40, 50, 60, 70, 80, 90]; const numb9 = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const numb19 = [11, 12, 13, 14, 15, 16, 17, 18, 19]; const string900 = ['сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот']; const string90 = ['десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто']; const string9 = ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять']; const string19 = ['одиннацать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать']; function transformation(number){ for(i = 0; i < 9; i++){ if(numb900[i] == number){ return string900[i]; } else if(numb90[i] == number){ return string90[i]; } else if(numb9[i] == number){ return string9[i]; } else if(numb19[i] == number){ return string19[i]; } } } console.log(transformation(200)); // Например 200 = двести, или 448 = четыреста сорок восемь |
|
Так это же не Vanilla js .. Рони, немного обновил код, но все равно не понимаю как соединить сотню с десяткой и единицей? Подскажешь?
|
Цитата:
|
Цитата:
|
WebMachine,
при желании, код можно оптимизировать... <body> <meta charset="utf-8"> <script> const numb900 = [100, 200, 300, 400, 500, 600, 700, 800, 900]; const numb90 = [10, 20, 30, 40, 50, 60, 70, 80, 90]; const numb9 = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const numb19 = [11, 12, 13, 14, 15, 16, 17, 18, 19]; const string900 = ['сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот']; const string90 = ['десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто']; const string9 = ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять']; const string19 = ['одиннацать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать']; function transformation(number) { if (number > 999) return '∞'; let str = ''; let num = number % 100; let i = numb19.findIndex(a => a == num); if (i !== -1) { number -= num; str = string19[i]; i = numb900.findIndex(a => a == number); return i !== -1 ? `${string900[i]} ${str}` : str; } else { let num = number % 10; let i = numb9.findIndex(a => a == num); if (i !== -1) { number -= num; str = string9[i]; if (!number) return str; num = number % 100; i = numb90.findIndex(a => a == num); if (i !== -1) { number -= num; str = `${string90[i]} ${str}`; if (!number) return str; i = numb900.findIndex(a => a == number); return `${string900[i]} ${str}` } i = numb900.findIndex(a => a == number); return `${string900[i]} ${str}` } else { let num = number % 100; let i = numb90.findIndex(a => a == num); if (i !== -1) str = string90[i]; number -= num; if (!number) return str; i = numb900.findIndex(a => a == number); return `${string900[i]} ${str}`; } } } for (let i = 1; i < 1000; i++) document.write(`${i} ${transformation(i)} <br>`) </script> </body> |
Цитата:
Задача такая, нужно написать скрипт который сможет преобразовывать любые числа от -999 до 999. Включая 0. |
Может так
const oneText = ['','один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять']; const elvText = ['десять', 'одиннацать', 'двенадцать','тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать']; const tanText = ['', '','двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто']; const hunText = ['', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот']; function transform(number){ let neg = false; if (number < 0) { neg = true; number = - number; } if (number >=1000) return ''; if (number === 0) return 'ноль'; const rez = []; if (neg) rez.push ('минус') const h = (number / 100) | 0; number = number % 100; const d = (number / 10) | 0; const n = number % 10; if (h > 0) rez.push (hunText[h]) if (d === 1) { rez.push (elvText[n]) } else { if (d > 0) rez.push (tanText[d]) if (n > 0) rez.push (oneText[n]) } return rez.join(' '); } console.log (transform(0)); console.log (transform(5)); console.log (transform(10)); console.log (transform(17)); console.log (transform(30)); console.log (transform(42)); console.log (transform(100)); console.log (transform(214)); console.log (transform(473)); console.log (transform(-100)); console.log (transform(-214)); console.log (transform(-473)); |
Цитата:
|
Сори.
Могу решать задачи только своим уровнем. Даже не знаю, куда тут цикл присобачить. |
Часовой пояс GMT +3, время: 11:45. |