如何通过AJAX请求对以JSON格式返回的数据进行排序?

时间:2015-10-22 17:38:51

标签: javascript jquery arrays ajax sorting

我有一个针对sharepoint API的AJAX请求。它返回一个Files数组。我正在获取这些结果数组并向Select元素添加一系列选项。我希望能够通过Name属性按字母顺序对数组进行排序。我该怎么做呢?我目前的Ajax电话会议如下。谢谢你

    jQuery.ajax({
        url: url,
        type: "GET",
        headers: {
            "accept": "application/json;odata=verbose",
        },
        success: function (data) {
            jQuery("#items").empty();
            jQuery("#items").prepend('<option value="-1">-Select Item-</option>').val('-1');
            jQuery.each(data.d.results, function (index, item) {
                jQuery("#items").append('<option value="' + item.ServerRelativeUrl + '">' + item.Name + '</option>');
            });
            jQuery("#items").val("");
        },
        error: function () {
            alert("Error getItems");
        }
    });
};

2 个答案:

答案 0 :(得分:1)

你可以用javascript对数组进行排序,但是你不能让Sharepoint为你返回一个有序列表吗?似乎这是一个有用的功能。无论如何,在javascript:

jQuery("#items").prepend('<option value="-1">-Select Item-</option>').val('-1');
var res = data.d.results.sort(function(a,b){
    if(a.Name < b.Name) return -1;
    if(a.Name > b.Name) return 1;
    return 0;
});
jQuery.each(res, function (index, item) {
    jQuery("#items").append('<option value="' + item.ServerRelativeUrl + '">' + item.Name + '</option>');
});

答案 1 :(得分:0)

如果我是你,我会使用像下划线那样的东西

http://underscorejs.org/#sortBy

像这样的事情

var array = [
    { name: "banana" },
    { name: "carrot" },
    { name: "apple" }
];

var sorted = _.sortBy(array,"name");

并传递数组中的data.d.results

希望有所帮助