Array.sort().filter(…) with zero in Javascript

前端 未结 5 844
情深已故
情深已故 2020-12-10 13:44

Why 0 is not returned by the following filter ?

[0, 5, 4].sort().filter(function(i){return i}) // returns : [4, 5]
5条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-10 14:15

    To keep 0, but still filter out falsy values, try this:

    [0, 5, undefined, 4, null, 7, NaN, -4].sort().filter(function(item){
      return item || item === 0;
    });
    

    Edit: Refactored with ES2015 arrow function

    [0, 5, undefined, 4, null, 7, NaN, -4].sort().filter(item => item || item === 0);
    

提交回复
热议问题