2016-03-14 5 views
0

у меня есть выбор массива:Сортировка на основе другого значения массива

var selections = (JSON.stringify($('#approval').select2('data'))); 
var selections = JSON.parse("[" + selections + "]"); 

console.log от выборов является:

enter image description here


Я хочу, чтобы отсортировать его базу на approvalValue массиве, вот массив:
enter image description here
Я попробовал это, бу t не работает, ничего не изменилось:

var i = 0; 
selections.sort(function(a,b){ 
    return approvalValue.indexOf(a[0][i]['element']['id']) < approvalValue.indexOf(b[0][i]['element']['id']) ? -1 : 1; 
i = i+1; 
}); 

Как отсортировать варианты с идентификатором 151,149, затем 150?

ответ

0

Попробуйте выщипывание идентификатора из второго массива, что-то вроде (используя карту или что-то еще):

var sorting = [ 151, 149, 150]; 

Затем перебирать первый массив и сортировать его, основываясь на том, что:

var result = [] 

sorting.forEach(function(key) { 
var found = false; 
selections = selections.filter(function(item) { 
    if(!found && item[1] == key) { 
     result.push(item); 
     found = true; 
     return false; 
    } else 
     return true; 
    }) 
}) 
Смежные вопросы