[] .sort忽略未定义的值?

时间:2016-06-08 20:10:15

标签: javascript arrays sorting

我想对包含undefined / null和数字的数组进行排序,以便始终优先使用undefined / null值:

function sorter(a, b) {
    if (a == b) return 0;
    if (a == undefined) return -1;
    if (b == undefined) return  1;
    return a - b;
}

但是,当数组包含未定义的值时,它将成为最后一个元素

[-1, 0, 1, undefined, 2, 3].sort(sorter);     // [-1, 0, 1, 2, 3, undefined]

如果值为null,则正确排序

[-1, 0, 1, null, 2, 3].sort(sorter);          // [null, -1, 0, 1, 2, 3]

我做错了什么?由于null == undefined?

,不应该导致完全相同的顺序

1 个答案:

答案 0 :(得分:1)

如果您向console.log(a, b)功能添加sorter,则会发现undefined值永远不会传递到sorter功能。我认为口译员认为这是一个差距"在数组中,因此不要将其视为一个值。

顺便说一下,null == undefinedtrue,但null === undefined是假的,它们不是一回事。