微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将特定顺序的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)

原文地址:https://www.jb51.cc/js/154407.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐