switch statement - string vs int

javascript, jquery

Solution

Or is there a way to get the value as an int, like say with jQuery()?

Of course, this is almost always a feature provided in a language or environment. In JavaScript, there are four ways:

`parseInt` will parse the string as a whole number. `value = parseInt(value, 10)` will parse it as decimal (e.g., base 10, the number system most of us use). Note that `parseInt` will parse the number it finds at the beginning of the string, ignoring anything after it. So `parseInt("1blah", 10)` is `1`.

`parseFloat` will parse the string as a potentially-fractional number (like `1.2`), if the string contains a decimal point. It always works in base 10.

The `Number` function: `value = Number(value)`. That expects the entire string to be a number, and figures out what number base it is by looking at the string: The default is decimal, but if it starts with `0x` it's parsed as hexadecimal (base 16), and on some engines in loose mode if it starts with `0` it's parsed as octal (base 8). There's no way to force it to use a particular number base.

Force the engine to implicitly convert it by applying a math operator to it; the usual one is `+`. So: `value = +value`. That does the same thing `value = Number(value)` does. Oddly, it tends to be slower than `Number` on some engines, but not enough to matter.

Examples:

parseInt("15", 10):  15
parseFloat("15"):    15
Number("15"):        15
+"15":               15

parseInt("1.4", 10): 1
parseFloat("1.4"):   1.4
Number("1.4"):       1.4
+"1.4":              1.4

parseInt("10 nifty things", 10): 10
parseFloat("10 nifty things"):   10
Number("10 nifty things"):       NaN
+"10 nifty things":              NaN

Live Copy:

console.log(parseInt("15", 10));              // 15
console.log(parseFloat("15"));                // 15
console.log(Number("15"));                    // 15
console.log(+"15");                           // 15

console.log(parseInt("1.4", 10));             // 1
console.log(parseFloat("1.4"));               // 1.4
console.log(Number("1.4"));                   // 1.4
console.log(+"1.4");                          // 1.4

console.log(parseInt("10 nifty things", 10)); // 10
console.log(parseFloat("10 nifty things"));   // 10
console.log(Number("10 nifty things"));       // NaN
console.log(+"10 nifty things");              // NaN
.as-console-wrapper {
    max-height: 100% !important;
}

Problem

I have this line of javascript in an event handler: ``` var value = event.currentTarget.value; //example: 9 ``` which I then use in a switch statement. ``` switch (value) { case 9: return 12; case 12: return 9; } ``` The problem is that "value" is a string instead of an int. Should I just cast this to an int? Or is there a way to get the value as an int, like say with jQuery()? Or should I just use strings in the switch statement?

Original source