假设我有一个对象数组:
var a = [
{label: 'one', value: 0},
{label: 'two', value: 5},
{label: 'three', value: 9},
{label: 'four', value: 4},
{label: 'five', value: 2},
{label: 'six', value: 0}
]
现在我需要按升序顺序放置所有项目,这可以通过_.sortBy
轻松完成,但是我想将所有零值从数组的开头放到结尾,所以我的值看起来像行2, 4, 5, 9, 0, 0
?
答案 0 :(得分:3)
您可以使用自定义迭代器和Infinity property作为代表0的值,从而将它们推送到最后:
var s = _.sortBy(a, function(o) {
return o.value || Infinity ;
});
答案 1 :(得分:2)
您可以使用下划线库来执行此操作,例如
var _ = require("underscore");
var result = _.partition(a, function(currentObject) {
return currentObject.value !== 0;
});
console.log(_.flatten([_.sortBy(result[0], "value"), result[1]]));