Просто Javascript, чтобы преобразовать числа от 1 до 11 в слова? - PullRequest
0 голосов
/ 07 августа 2020

Обратите внимание, что я только новичок и ищу сначала простое решение, если возможно. Мне нужно заменить переменные, содержащие цифры от 1 до 11, на слова.

Я полагаю, есть лучший способ сделать это?

Тернарный оператор

Я пробовал это, но получаю одиннадцать независимо от переменной. «Прошло одиннадцать лет и одиннадцать месяцев». Почему в обоих примерах выводится одиннадцать?

var m = 4;
var y = 2;

m = 1 ? m = 'one' : '';
m = 2 ? m = 'two' : '';
m = 3 ? m = 'three' : '';
m = 4 ? m = 'four' : '';
m = 5 ? m = 'five' : '';
m = 6 ? m = 'six' : '';
m = 7 ? m = 'seven' : '';
m = 8 ? m = 'eight' : '';
m = 9 ? m = 'nine' : '';
m = 10 ? m = 'ten' : '';
m = 11 ? m = 'eleven' : '';

y = 1 ? y = 'one' : '';
y = 2 ? y = 'two' : '';
y = 3 ? y = 'three' : '';
y = 4 ? y = 'four' : '';
y = 5 ? y = 'five' : '';
y = 6 ? y = 'six' : '';
y = 7 ? y = 'seven' : '';
y = 8 ? y = 'eight' : '';
y = 9 ? y = 'nine' : '';
y = 10 ? y = 'ten' : '';
y = 11 ? y = 'eleven' : '';

console.log(`It has been ${y} years and ${m} months.`)

Переключение подхода

var m = 4;
var y = 2;

switch (m)  {
    case 1: m = 'one';
        break;
    case 2: m = 'two';
        break;
    case 3: m = 'three';
        break;
    case 4: m = 'four';
        break;
    case 5: m = 'five';
        break;
    case 6: m = 'six';
        break;
    case 7: m = 'seven';
        break;
    case 8: m = 'eight';
        break;
    case 9: m = 'nine';
        break;
    case 10: m = 'ten';
        break;
    case 11: m = 'eleven';
        break;
}
    
switch (y)  {
    case 1: y = 'one';
        break;
    case 2: y = 'two';  
        break;
    case 3: y = 'three';
        break;
    case 4: y = 'four'; 
        break;
    case 5: y = 'five';  
        break;
    case 6: y = 'six'; 
        break;
    case 7: y = 'seven';
        break;
    case 8: y = 'eight';  
        break;
    case 9: y = 'nine'; 
        break;
    case 10: y = 'ten';  
        break;
    case 11: y = 'eleven';
        break;
}

console.log(`It has been ${y} years and ${m} months.`)

Ответы [ 4 ]

1 голос
/ 07 августа 2020

Обе попытки были близки, вы только что сделали 2 небольшие ошибки.

Первая попытка: для сравнения нужно использовать ==, а не =. = - оператор присваивания

Вторая попытка: вам нужно добавить break после каждого оператора переключения

операторов

переключатель

var m = 4;
var y = 2;

m == 1 ? m = 'one' : '';
m == 2 ? m = 'two' : '';
m == 3 ? m = 'three' : '';
m == 4 ? m = 'four' : '';
m == 5 ? m = 'five' : '';
m == 6 ? m = 'six' : '';
m == 7 ? m = 'seven' : '';
m == 8 ? m = 'eight' : '';
m == 9 ? m = 'nine' : '';
m == 10 ? m = 'ten' : '';
m == 11 ? m = 'eleven' : '';

y == 1 ? y = 'one' : '';
y == 2 ? y = 'two' : '';
y == 3 ? y = 'three' : '';
y == 4 ? y = 'four' : '';
y == 5 ? y = 'five' : '';
y == 6 ? y = 'six' : '';
y == 7 ? y = 'seven' : '';
y == 8 ? y = 'eight' : '';
y == 9 ? y = 'nine' : '';
y == 10 ? y = 'ten' : '';
y == 11 ? y = 'eleven' : '';

console.log(`It has been ${y} years and ${m} months.`)

var m = 4;
var y = 2;

switch (m)  {
    case 1: m = 'one'; break;
    case 2: m = 'two'; break;
    case 3: m = 'three'; break;
    case 4: m = 'four'; break;
    case 5: m = 'five'; break;
    case 6: m = 'six'; break;
    case 7: m = 'seven'; break;
    case 8: m = 'eight'; break;
    case 9: m = 'nine'; break;
    case 10: m = 'ten'; break;
    case 11: m = 'eleven'; break;
}
    
switch (y)  {
    case 1: y = 'one'; break;
    case 2: y = 'two'; break;
    case 3: y = 'three'; break;
    case 4: y = 'four'; break;
    case 5: y = 'five'; break;
    case 6: y = 'six'; break;
    case 7: y = 'seven'; break;
    case 8: y = 'eight'; break;
    case 9: y = 'nine'; break;
    case 10: y = 'ten'; break;
    case 11: y = 'eleven'; break;
}

console.log(`It has been ${y} years and ${m} months.`)
1 голос
/ 07 августа 2020

Это можно сделать с помощью простого массива.

var numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven'];

for (var i = 0; i <= 11; i++) {
  console.log(numbers[i]);
}
0 голосов
/ 07 августа 2020

function numeral(m){
   var numbers = ['zero','one','two','three','four','five','six','seven','eight','nine','ten','eleven'];
   return numbers[m]
}

var x = numeral(3);
console.log(x)


 numeralES6=(m)=>{
   var numbers = ['zero','one','two','three','four','five','six','seven','eight','nine','ten','eleven'];
   return numbers[m]
}

var y = numeralES6(4);
console.log(y)
0 голосов
/ 07 августа 2020

Это потому, что если y или m не являются значениями, они станут пустой строкой. Правильный способ сделать это:

var m = 4;
var y = 2;

switch (m)  {
    case 1: m = 'one';
    break;
    case 2: m = 'two';
    break;
    case 3: m = 'three';
    break;
    case 4: m = 'four';
    break;
    case 5: m = 'five';
    break;
    case 6: m = 'six';
    break;
    case 7: m = 'seven';
    break;
    case 8: m = 'eight';
    break;
    case 9: m = 'nine';
    break;
    case 10: m = 'ten';
    break;
    case 11: m = 'eleven';
    break;
}
    
switch (y)  {
    case 1: y = 'one';
    break;
    case 2: y = 'two';
    break;
    case 3: y = 'three';
    break;
    case 4: y = 'four';
    break;
    case 5: y = 'five';
    break;
    case 6: y = 'six';
    break;
    case 7: y = 'seven';
    break;
    case 8: y = 'eight';
    break;
    case 9: y = 'nine';
    break;
    case 10: y = 'ten';
    break;
    case 11: y = 'eleven';
    break;
}

console.log(`It has been ${y} years and ${m} months.`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...