Could you use an object where the property name was an index and the property value was a value, and then run it through an intermediary function to create your sparse array?
function getSparseArray(obj) { var ary = []; for (prop in obj) { var i = parseInt(prop,10); if (!isNaN(i)) { ary[i] = obj[prop]; } } return ary; }
Would you send something like
{ "5":"Five", "11":"Eleven", "99":"Ninety-Nine"}
and return an array that was filled with just three values:
ary[5] = "Five" ary[11] = "Eleven" ary[99] = "Ninety-Nine" ary[0] = 'undefined' ary[98] = 'undefined' etc.
ary here will have a length of 100, but it will be a "sparse" array in your sense.
source share