How does Array.prototype.sort
handle undefined values in an array?
var array = [1,undefined,2,undefined,3,undefined,4];
var array2 = [];
array2[0] = 1;array2[2] = 2;array2[4] = 3;array2[6] = 4;
When calling array.sort(function(l,r) { ... });
The values undefined
are never passed in as l
or r
.
Can I guarantee that all the undefined values will always go to the end of the array for all browsers?
Would the following loop handle all the non undefined
data in an array
array.sort();
for (var i = 0; array[i] !== undefined; i++) {
// handle array
}
You may assume that no-one declared undefined
as a variable.
Yes, you can safely assume undefined
will get moved to the end of the array.
From MDC:
In JavaScript 1.2, this method no longer converts undefined elements to null; instead it sorts them to the high end of the array
From the spec, 15.4.4.11 :
Because non-existent property values always compare greater than undefined property values, and undefined always compares greater than any other value, undefined property values always sort to the end of the result, followed by non-existent property values.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With