【问题标题】:How do I Sort the data returned in JSON format by an AJAX request?如何对 AJAX 请求返回的 JSON 格式的数据进行排序?
【发布时间】:2015-10-22 17:38:50
【问题描述】:

我有一个针对共享点 API 的 AJAX 请求。它返回一个文件数组。我正在使用这些结果数组并向 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");
        }
    });
};

【问题讨论】:

  • 显示返回结果示例
  • 我们可以看看你的 JSON 结果吗
  • 根据 Sharepoint API,JSON 采用这种格式 msdn.microsoft.com/EN-US/library/office/… 特别是我的两个项目采用这种格式:“Name”:“fileName.docx”、“ServerRelativeUrl”:“/Shared Documents/folderName/文件名.docx",

标签: javascript jquery arrays ajax sorting


【解决方案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>');
});

【讨论】:

  • 是的,我现在觉得有点傻。我一直专注于 AJAX 查询,我忘记了 OData 中的 orderby 参数。 :-D
【解决方案2】:

如果我是你,我会使用下划线之类的东西

http://underscorejs.org/#sortBy

类似的东西

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

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

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

希望对你有帮助

【讨论】:

  • 理想情况下,我希望避免对 Jquery 和 Sharepoint API 之外的外部库的任何依赖
  • @Phil 然后看下划线的源码,取你需要的。它是heresortBy 方法从第 385 行开始。
猜你喜欢
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多