2017-01-22 4 views
0

У меня есть код ниже, который смотрит на скрытые входы с классом howmanyproducts.Javascript сортировка входных значений в массив

$("#proddiv .howmanyproducts").each(function() { 
    var idval = $(this.id).val(); 
}); 

То, что я пытаюсь достичь для каждого ID получить значение и сортировку идентификаторов в массив на основе их значений.

ответ

0

Вы должны добавить как свои идентификаторы и соответствующие значения в массив, а затем использовать sort метод вашего массива с адаптированной функцию сравнения. Пусть говорят ваши значения числа, но извлекаются в виде строки:

// Create a new empty array : 
    var ids = []; 
    $("#proddiv .howmanyproducts").each(function() { 
     var id = this.id; 
     var val = $(this.id).val(); 
     // Store the id and the value: 
     ids.push([id, +val]); 
    }); 
    // Sort the array in place, using the second element of each item 
    // ie. the value : 
    ids.sort(function(a, b) { return a[1] - b[1]; }); 
    // Once sorted, make a new array with only the ids: 
    var result = ids.map(function(a,b) { return a[0] }); 

Я использовал традиционный синтаксис, но учтите, что это может быть записано более просто с помощью функции стрелок:

ids.sort((a,b) => a[1] - b[1]); 
var result = ids.map((a,b) => a[0]); 
+0

Мне нужно, чтобы отобразить идентификаторы в массиве, а не их значениях, но сортировка должна быть в значениях. нужно ли быть многомерным? –

+0

Да, вы можете использовать его в многомерном массиве, я обновил свой ответ. – mgc

0
var arrayOfValues = []; 

$("#proddiv .howmanyproducts").each(function() { 
    arrayOfValues.push($(this).val()); 
} 
Смежные вопросы