将特定顺序的JavaScript对象数组排序(使用现有函数)

前端之家收集整理的这篇文章主要介绍了将特定顺序的JavaScript对象数组排序(使用现有函数)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个对象数组:
{
    key: "a",value: 42
},{
    key: "d",value: 28
},{
    key: "c",value: 92
},{
    key: "b",value: 87
}

和一组键:

["c","a","b","d"]

是否有一个ECMAScript函数或第三方JavaScript库,让您可以在一行/函数调用中排序第一个对象数组,以匹配第二个数组中指定的键的顺序,以使结果为:

{
    key: "c",{
    key: "a",value: 87
},value: 28
}

提供功能或算法的其他问题:

> Javascript – sort array based on another array – Stack Overflow
> javascript – How do I sort an array of objects based on the ordering of another array? – Stack Overflow

类似/相关问题:

> Sorting an Array of Objects in PHP In a Specific Order
> php – Sort array of objects

解决方法

只需使用indexOf将密钥转换为正确的顺序:
var order = ["c","d"];
_.sortBy(arr,function(obj){ 
    return _.indexOf(order,obj.key);
});

Fiddle

如果有很多键,那么将数组中的哈希映射放在一起是有利的,如:

var order = ["c","d"];
var orderMap = {};
_.each(order,function(i) { orderMap[i] = _.indexOf(order,i); });

这使得键排序查找的时间不是O(n). (Fiddle)

猜你在找的JavaScript相关文章