![](/img/trans.png)
[英]How to sort an array of objects using two properties but conditionally group in the sort order depending on a condition?
[英]How to sort an array of objects depending on a custom sort order using underscore
我有一个对象数组
[
{type:"foo",elements:[...]},
{type:"bar",elements:[...]},
{type:"any",[...]},
{type:"some",elements:[...]}
]
我知道如何使用下划线的_.sortBy()方法通过属性'type'对该数组进行排序。
但现在我需要一个依赖于另一个数组的自定义排序顺序:
["any","foo","some","bar"]
我的sortBy回调如何通过我的自定义顺序对我的对象进行排序?
这很容易:
_.sortBy(yourArrray, function(obj){
return typesArray.indexOf(obj.type);
});
它排序yourArray
基于位置obj.type
在typesArray
。 数组中不存在的类型首先出现。
注意 - 此代码具有复杂度O(kn log n)
。 要改进它,请使用以下代码:
var yourTypes = {
'any': 1,
'foo': 2,
'some': 3
}
_.sortBy(yourArrray, function(obj){
return yourTypes [obj.type];
});
对象查找通常更快,导致O(1)访问(以及整体O(n log n)排序)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.