Why 0 is not returned by the following filter ?
[0, 5, 4].sort().filter(function(i){return i}) // returns : [4, 5]
Try this:
[0, 5, 4].sort().filter(function(i){ return ((i) ? i : !i); })