我需要基于另一个数组对数组进行排序。但是,有一个更大的数组,但我只想对某些项目属性进行排序。第一个数组是这样的:从另一个数组中排序数组的一部分
var data = [ { id : "23", name : "Item 1", isActive : true},
{ id : "25", name : "Item 2", isActive : false},
{ id : "26", name : "Item 3", isActive : false},
{ id : "30", name : "Item 4", isActive : true},
{ id : "45", name : "Item 5", isActive : true}
]
然后,我这样做是为了获取有效项目的ID:
我做一些操作(数据库comparaison),我得到例如这样的结果:
var sorted = ["45","23","30"]
当我第一次按isActive排序项目时,我只想对活动的项目进行排序。 (取决于数组排序上面)像这样:
var expected = [
{ id : "45", name : "Item 5", isActive : true},
{ id : "23", name : "Item 1", isActive : true},
{ id : "30", name : "Item 4", isActive : true},
//try to keep order for the last values
{ id : "25", name : "Item 2", isActive : false},
{ id : "26", name : "Item 3", isActive : false}]
我试图用_.sortBy的方法,但如预期这并没有工作:但
var sortObj = sorted.reduce(function(acc, value, index) {
acc[value] = value;
return acc;
}, {});
sortedItems = _.sortBy(data, function(x) {
return _.indexOf(sortObj, x.id)
});
如预期没有奏效
任何想法?非常感谢提前=)
我不知道理解那种类型的,你需要什么 –
你想先所有活动项目,然后活性,但保持第一顺序? –
https://github.com/Teun/thenBy.js –