按名称而不按ID排序到Jquery

时间:2018-09-11 19:07:34

标签: jquery

我有一个jquery ajax函数来检索汽车品牌。

在服务器端,查询是按品牌名称排序的。

但是当涉及到jquery时,列表是按id排序的。

如何按名称而不是按ID排序到jQuery?

维护服务器端订购吗?

var $optionsBrand = $("#BrandId").html($("<option />").val('').text('select one'));
    if($response) {                        
        $optionsBrand.prop("disabled", false);
        $.each($response, function(id, value){
            var $opt = new Option(value, id);
            $optionsBrand.append($opt);        
        });
    }

从服务器端,我的SQL查询以这种方式返回列表:

4-BMW
3-FORD
2-KIA
5-Nissan
1-Volkswagen

Jquery端重新排序为这种方式:

1-Volkswagen
2-KIA
3-FORD
4-BMW
5-Nissan

如何按名称维护服务器端订购?

2 个答案:

答案 0 :(得分:1)

您可以通过JS做类似的事情

$optionsBrand.sort(function (a, b) {
  if (a.name > b.name) {
    return 1;
  }else if (a.name < b.name) {
    return -1;
  }
  return 0;
});

答案 1 :(得分:1)

由于接收到对象,因此需要将其映射到数组并再次对其进行排序。理想的是从服务器发送一个数组,而不是因为数组保证顺序,对象却不发送

var $response ={1: "Volkswagen", 2: "KIA", 3: "FORD", 4: "BMW", 5: "Nissan"}

var sorted = Object.keys($response).map(function(key){
    return {id: key, name: $response[key]};
}).sort(function(a,b){
   return a.name.localeCompare(b.name);
});

console.log(sorted)