我有一系列对象
[
{type:"foo",elements:[...]},
{type:"bar",elements:[...]},
{type:"any",[...]},
{type:"some",elements:[...]}
]
我知道如何使用下划线的_.sortBy()方法按属性“类型”对数组进行排序。
但是现在我需要一个依赖于另一个数组的自定义排序顺序:
["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)排序)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句