【问题标题】:Sorting an array of object depending on another array根据另一个数组对对象数组进行排序
【发布时间】:2015-01-03 15:51:39
【问题描述】:

我有两个这样的数组:

objects = [Obj1, Obj2, Obj3];
scores  = [10,200,15];

objects[i] 对应其在 scores[i] 中的分数。

我需要对对象数组进行降序排序,具体取决于它们的相对分数。

知道如何在 jQuery/javascript 中有效地做到这一点吗? 感谢您的帮助!

【问题讨论】:

  • 最好将它们合并为一个对象,然后对它们进行排序。
  • 您还想要对分数进行排序吗?
  • 将分数作为它所属对象的属性不是更容易吗?

标签: javascript jquery arrays sorting


【解决方案1】:

正如@Rory McCrossan 所建议的那样,最好的方法可能是将这些值连接在一起,然后如果需要再将它们分开:

// produces [{score: 10,  value: Obj1}, 
//           {score: 200, value: Obj2},
//           {score: 15,  value: Obj3}]
var joined = objects.map(function (el, i) {
    return { score: scores[i], value: el };
});

// rearranges joined array to:
//          [{score: 200, value: Obj2},
//           {score: 15,  value: Obj3},
//           {score: 10,  value: Obj1}]
joined.sort(function (l, r) { return r.score - l.score; });

// produces [Obj2, Obj3, Obj1]
var sorted = joined.map(function (el) { return el.value; });

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多