How does Array.prototype.sort
handle undefined values in an array?
var array = [1,undefined,2,undefined,3,undefined,4];
var array2 = [];
array2[
all undefined values will go to the end of the array regardless of their order in declaration. (at least this is how it works in chrome's js engine)
It appears that the undefined values will fall to the bottom of the list. Here's some sample code to show you what happens:
var a = [1,undefined,2,undefined,3,undefined,4];
a = a.sort();
for( i = 0 ; i < a.length ; i++ )
{
alert( a[i] );
}
This is, of course, the default behavior of JavaScript. If you overwrite the default behavior then only you will know.
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.