sub*_*nid 5 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;
}
Run Code Online (Sandbox Code Playgroud)
但是,当数组包含未定义的值时,它将成为最后一个元素
[-1, 0, 1, undefined, 2, 3].sort(sorter); // [-1, 0, 1, 2, 3, undefined]
Run Code Online (Sandbox Code Playgroud)
如果值为空,它会正确排序
[-1, 0, 1, null, 2, 3].sort(sorter); // [null, -1, 0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?由于 null == undefined,这不应该导致完全相同的顺序吗?
如果添加console.log(a, b)到函数中sorter,您会发现该undefined值永远不会传递到sorter函数中。我认为解释器认为它是数组中的“间隙”,因此并没有真正将其视为一个值。
顺便说一句,null == undefinedis true,但null === undefinedis false,它们不是同一件事。
| 归档时间: |
|
| 查看次数: |
2658 次 |
| 最近记录: |