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

How do I Sort the data returned in JSON format by an AJAX request?

本文关键字:数据 排序 返回 格式 AJAX 请求 JSON      更新时间:2023-09-26

我有一个针对sharepoint API的AJAX请求。它返回一个文件数组。我正在使用这些结果数组并向Select元素添加一系列选项。我希望能够按名称属性按字母顺序排序数组。我该怎么做呢?我当前的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");
        }
    });
};

你可以在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>');
});

如果我是你,我会使用下划线

http://underscorejs.org/sortBy

像这样的

var array = [
    { name: "banana" },
    { name: "carrot" },
    { name: "apple" }
];
var sorted = _.sortBy(array,"name");

并传递数组

中的data.d.results

希望有所帮助