根据另一个数组对对象数组进行排序
Sorting an array of object depending on another array
我有两个这样的数组:
objects = [Obj1, Obj2, Obj3];
scores = [10,200,15];
对象[i]对应于它在scores[i]中的分数。
我需要根据对象的相对分数对对象数组进行降序排序。
知道如何在 jQuery/javascript 中有效地做到这一点吗?
感谢您的帮助!
正如@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; });
我有两个这样的数组:
objects = [Obj1, Obj2, Obj3];
scores = [10,200,15];
对象[i]对应于它在scores[i]中的分数。
我需要根据对象的相对分数对对象数组进行降序排序。
知道如何在 jQuery/javascript 中有效地做到这一点吗? 感谢您的帮助!
正如@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; });