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

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

和一组键:

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

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

  1. {
  2. key: "c",{
  3. key: "a",value: 87
  4. },value: 28
  5. }

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

> 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将密钥转换为正确的顺序:
  1. var order = ["c","d"];
  2. _.sortBy(arr,function(obj){
  3. return _.indexOf(order,obj.key);
  4. });

Fiddle

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

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

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

猜你在找的JavaScript相关文章