2015-01-03 3 views
1

У меня есть два массива, как эти:Сортировка массива объекта в зависимости от другого массива

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

с объектами [я], соответствующие его оценка в баллах [я].

Мне нужно отсортировать массив объектов в порядке убывания, в зависимости от их относительных оценок.

Любая идея, как эффективно это сделать в jQuery/javascript? Благодарим за помощь!

+4

Вероятно, было бы лучше, чтобы соединить их вместе как единый объект, а затем сортировать их. –

+0

Вы также хотите отсортировать сортировку? – theonlygusti

+0

Не было бы легче сохранить оценки как свойство объекта, к которому он принадлежит? – adeneo

ответ

2

Как следует @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; }); 
+0

Спасибо, работает отлично! – MPikkle

Смежные вопросы