我有一个对象数组
[
{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) 排序)。
关于javascript - 如何使用下划线根据自定义排序顺序对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36619967/