Reputation: 35
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
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
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
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
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
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