patternjavascriptMinor
Getting a compass point from 140°
Viewed 0 times
point140gettingcompassfrom
Problem
This JavaScript converts degrees to a compass point, e.g.
I can't help but think: is there a more concise way to do this?
convert.toCompass(140) gets 140° -> SE.I can't help but think: is there a more concise way to do this?
var convert = {
toCompass: function(degrees)
{
if(degrees >= 0 && degrees 11.25 && degrees 33.75 && degrees 56.25 && degrees 78.75 && degrees 101.25 && degrees 123.75 && degrees 146.25 && degrees 168.75 && degrees 191.25 && degrees 213.75 && degrees 236.25 && degrees 258.75 && degrees 281.25 && degrees 303.75 && degrees 326.25 && degrees 348.75 && degrees <= 360)
{
return 'N';
}
}
}Solution
By looking at values in your series of
JSFiddle demo
if's, you can make an array ([]), then calculate which index to pick:var convert = {
toCompass: function(degrees)
{
return ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'][Math.round(degrees / 11.25 / 2)];
}
}
alert(convert.toCompass(140)); // SEJSFiddle demo
Code Snippets
var convert = {
toCompass: function(degrees)
{
return ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'][Math.round(degrees / 11.25 / 2)];
}
}
alert(convert.toCompass(140)); // SEContext
StackExchange Code Review Q#38613, answer score: 7
Revisions (0)
No revisions yet.