Как отсортировать несколько полей в списке параметров в JavaScript - PullRequest
0 голосов
/ 31 августа 2018

Я использую jQuery для динамического создания списка опций для выпадающего меню, например так:

for(var i =0 ; i < response.length ; i++){
   options += '<option value="'stuff'">' +  response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>';
}

Я хочу упорядочить список опций по String aString, во-вторых, по aNumber и, в-третьих, по другомуNumber.

Так, например, я хочу, чтобы это выглядело как Cat-1-1 Cat-2-1 Cat-2-3 Собака-1-1

Я сейчас использую:

$("#serviceCoverDropdown").html($('#serviceCoverDropdown option').sort(function(x, y) {
  return $(x).val() < $(y).val() ? -1 : 1;
 }))

Это сортирует aString & aNumber правильно, но он не группирует вместе otherNumber, особенно если он имеет 2 или более цифр, например 10

Есть идеи? Большое спасибо

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

В дополнение к тому, что Peter Van Drunen , попробуйте выполнить сортировку массива:

response.sort(function (a, b) {
    return a.aString.localeCompare(b.aString) || a.aNumber - b.aNumber;
});

Обновление на основе примера:

response.sort(function (a, b) {

    return (
        a.aNumber.localeCompare(b.aNumber)
        || a.aString - b.aString
        || a.anotherNumber - b.anotherNumber
    );

});
0 голосов
/ 31 августа 2018

Попробуйте отсортировать ответ перед генерацией HTML:

response.sort(function(a, b) {
    // do sorting logic desired here
});

// now add the option nodes
for(var i = 0; i < response.length; i++){
   options += '<option value="'stuff'">' +  response[i].aNumber+'-'+ response[i].aString+'-'+response[i].anotherNumber + '</option>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...