排序时使空值始终存在

Luk*_*101 3 javascript underscore.js

我使用下划线来排序数组.有没有办法使空值总是持续上升或下降?例如:

[
    { name: 'a', age: 1 }, 
    { name: 'z', age: 5 }, 
    { name: '', age: 1 }, 
    { name: 'v', age: 7 }
]
Run Code Online (Sandbox Code Playgroud)

会生产

[
    { name: 'a', age: 1 }, 
    { name: 'v', age: 7 }, 
    { name: 'z', age: 5 }, 
    { name: '', age: 1 }
]
Run Code Online (Sandbox Code Playgroud)

和降序将产生:

[
    { name: 'z', age: 5 }, 
    { name: 'v', age: 7 }, 
    { name: 'a', age: 1 }, 
    { name: '', age: 1 }
]
Run Code Online (Sandbox Code Playgroud)

我真正的数组是一个对象数组,所以我必须把值拿出来.

ist*_*tos 6

有很多方法可以解决它,但你可以尝试这样的事情:

var arr = [{name: 'a', age: 1}, {name: 'z', age: 5}, {name: '', age: 1}, {name: 'v', age: 7 }];

_.chain(arr)
 .sortBy('name')
 //.reverse() // to sort descending
 .partition('name')
 .flatten()
 .value();
Run Code Online (Sandbox Code Playgroud)

结果:

[ { name: 'a', age: 1 },
  { name: 'v', age: 7 },
  { name: 'z', age: 5 },
  { name: '', age: 1 } ]
Run Code Online (Sandbox Code Playgroud)