使用Javascript按字母顺序排序JSON响应

时间:2015-04-28 01:29:04

标签: javascript json sorting

服务器从查询中返回以下响应:

       { ROM: "Romania", 
         YUG: "Yugoslavia",
         PRT: "Portugal", 
         MKD: "Macedonia", 
         GRC: "Greece",
         FRA: "France", 
         ISL: "Iceland", 
         LUX: "Luxembourg", 
         HUN: "Hungary", 
         GBR: "United Kingdom", 36 more… }

我需要将这些放入已经存在的选择中,如下所示:

 $.each(result, function(key, value) { 

        $('#country')
        .append($("<option></option>")
        .attr("value",key)
        .text(value)); 

        });     

有人可以告诉我如何在将数据插入html元素之前按字母顺序对各国进行排序吗?

4 个答案:

答案 0 :(得分:1)

function OrderListBy(prop) {
    return function (a, b) {
        if (a[prop] > b[prop]) {
            return 1;
        }
        else if (a[prop] < b[prop]) {
            return -1;
        }
        return 0;
    }
}

调用此函数:按名称排序 -

YourArray.sort( OrderListBy("name") );

答案 1 :(得分:0)

var array = [item1, item2];
array.sort();

答案 2 :(得分:0)

您不能对对象进行排序,但可以对数组进行排序,因此您可以创建一个HTMLOptionElement个对象数组并对其进行排序,然后将其附加到select元素。

$('#country').append(function() {
    return $.map(result, function (key, value) {
        return new Option(key, value);
    }).sort(function (a, b) {
        return a.text.localeCompare(b.text);
    });
});

Here is a demo.

答案 3 :(得分:0)

您可以对返回的JSON进行排序,我假设结果是您返回的JSON 种类

Object.keys(result).sort().reduce(function (a, b) { a[b] = result[b]; return a; }, {});

Fiddle

这将对对象进行排序。要对输入进行排序:

$("#country").html(function () {  return $(this).find('option').sort(function(a,b){  return a.value-b.value  });  });

$("#country")替换为您的选择名称。

快速插件

这将添加sortArray函数

$.fn.sortSelect=function(){this.html(function(){  return $(this).find('option').sort(function(a,b){return a.value-b.value});});}

然后你可以做

$('#country').sortSelect()