slyfox
slyfox

Reputation: 35

Simple Javascript to Convert Numbers from 1 to 11 into Words?

Please note that I am just a beginner and looking for a simple solution first if possible. I need to replace variables contains digits from one to 11 to words.

I assume there is a better way to do this?

Ternary Operator approach

I tried these but I keep getting eleven no matter what the variable is. "It has been eleven years and eleven months." Why do I keep getting eleven in the output in both examples?

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.`)

Switch approach

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.`)

Upvotes: 0

Views: 520

Answers (4)

DCR
DCR

Reputation: 15665

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)

Upvotes: 0

GhostRoboXt
GhostRoboXt

Reputation: 114

It is because if y or m is not the values, it will become an empty string. The correct way to do this is:

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.`)

Upvotes: 0

Jannes Carpentier
Jannes Carpentier

Reputation: 1898

Both of your tries were close, you just made 2 small errors.

First try: you need to use ==, not = to compare. = is an assignment operator

Second try: you need to add a break after every switch statement

operators

switch

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.`)

Upvotes: 1

Nick
Nick

Reputation: 16576

This can be done with a simple array.

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]);
}

Upvotes: 1

Related Questions