Phrogz
Phrogz

Reputation: 303198

Faster to access numeric property by string or integer?

In JavaScript you can get and set indexes of arrays and "numeric" properties of objects using either an integer or a string and get the same results:

var a=[], o={};
a[1]    = "foo";  a["1"]   == "foo" // true
a["2"]  = "bar";  a[2]     == "bar" // true
a["-3"] = "baz";  a[-.3e1] == "baz" // true
o[1]    = "foo";  o["1"]   == "foo" // true
o["2"]  = "bar";  o[2]     == "bar" // true
o["-3"] = "baz";  o[-.3e1] == "baz" // true

While strings and numbers are interopable—for both getting and setting—which is faster (for both arrays and for objects)?

Upvotes: 18

Views: 3334

Answers (1)

Phrogz
Phrogz

Reputation: 303198

Unsurprisingly, integers are faster for array access than strings. Perhaps surprisingly, they are also faster than strings for object properties.

http://jsperf.com/string-vs-integer-array-indices

enter image description here

http://jsperf.com/string-vs-integer-object-indices

enter image description here

Upvotes: 26

Related Questions