ordinals in 140 bytes (v2)

Revision 2 of this benchmark created on


Description

return ordinal value of a number

Setup

function ordinal (a){return["th","st","nd","rd"][(a=~~(a<0?-a:a)%100)>10&&a<14||(a%=10)>3?0:a]}
    
    function ordinal2(a){return a=a%10,["th","st","nd","rd"][(a=~~(a<0?-a:a)%100)>10&&a<14||(a%=10)>3?0:a]}
    
    function ordinalWithRegExp (a){return[,"st","nd","rd"][/1?.$/.exec(a)]||"th"}

Test runner

Ready to run.

Testing in
TestOps/sec
original
for (var i = -123; i < 123; ++i) {
  ordinal(i);
}
ready
ordinal with regexp
for (var i = -123; i < 123; ++i) {
  ordinalWithRegExp(i);
}
ready
big number
for (var i = -123; i < 123; ++i) {
  ordinal2(i);
}
ready
big numbers original
for (var i = Math.pow(2, 32), j = i + 100; i < j; ++i) {
  ordinal(i);
}
ready
big numbers regexp
for (var i = Math.pow(2, 32), j = i + 100; i < j; ++i) {
  ordinalWithRegExp(i);
}
ready
big numbers ordinal2
for (var i = Math.pow(2, 32), j = i + 100; i < j; ++i) {
  ordinal2(i);
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.