如何使用下划线根据自定义排序顺序对对象数组进行排序
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);
});
它根据obj.type
在typesArray
中的位置对yourArray
进行排序。数组中不存在的类型优先。
请注意,此代码具有复杂性O(kn log n)
。要改进它,请使用以下代码:
var yourTypes = {
'any': 1,
'foo': 2,
'some': 3
}
_.sortBy(yourArrray, function(obj){
return yourTypes [obj.type];
});
对象查找通常更快,导致O(1)访问(以及总体O(n-logn)排序)。
相关文章:
- 在循环Handlebars之前重新排序对象键
- 将SortedMap从Java转换为Javascript中可读的排序对象
- 模仿`overflow-y:auto;overflow-x:visible `在jQuery UI可排序对象上
- Javascript排序对象日期
- Jquery UI:如何指示可拖动对象成功拖放到可排序对象上
- 删除数组中重复的未排序对象
- Javascript 递归地排序对象和嵌套对象以及数组
- 如何在目标可排序对象接收后获取拖动项的类
- Javascript:排序对象挑战
- 在 JavaScript 中合并多个排序对象数组的最有效方法是什么?
- 如何在角度UI中加载保存的可排序对象
- 任意重新排序和排序对象文字的 JavaScript 数组
- 使用下划线在javascript中重新排序对象
- 排序对象的多维数组与一个可变的深度在Javascript
- 在javascript中,排序对象不会传递给字符串变量
- JavaScript快速排序对象
- 在JavaScript数组中按键值排序对象
- 用布尔值排序对象
- 如何在D3.js中通过JSON文件解析按键排序对象
- Javascript如何按键排序对象,但不破坏原始对象的顺序