如何使用javascript对文档库中的列表项进行排序?

时间:2016-11-24 04:46:27

标签: javascript json sharepoint-2013

目前我有一些JavaScript可以检索列表项并将它们显示为无序列表的一部分。我已经被赋予了修改下面的javascript以对项目进行排序的任务。

    <script type="text/javascript" defer="defer">
    $.ajax({

        url: "/NewsEvents/_api/web/lists/GetByTitle('Newsletters')/items?$select=Title,FileRef",
        type: "GET",
        headers: {
            "accept": "application/json;odata=verbose",
        },
        success: function (data) {
            returnedvalue = data;
            var count = 0;
            $.each(data.d.results, function (index, item) {
                $('#NL ul').append("<li>" + "<a href='" + item.FileRef + "'>" + item.Title + "</a>" + "</li>");
                count++;
            });
        },
        error: function (error) {
            alert(JSON.stringify(error));
        }

    });
</script>

我之前没有做过很多javascript,我愿意学习。愿意指向正确的方向,而不仅仅是给出答案。

1 个答案:

答案 0 :(得分:2)

我假设data.d.results是一个类似于以下示例的JavaScript数组:

results: [
    {
        Title: "Article Title",
        FileRef: "something/or/other"
    },
    {
        Title: "Another Article Title",
        FileRef: "something/or/other/again"
    },
]

JavaScript的Array类型有一个内置的sort方法,它接受自定义比较器(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)。

我使用localeComparehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare)方法来比较每个数组元素的Title值。

我指定sensitivity: "base"来执行案例和重音不变的比较,因此比较时“article”和“Article”被视为相等。

success: function( data ) {

    data.d.results.sort(
        function( left, right ) {
            return left.Title.localeCompare( right.Title, { sensitivity: "base" } );
        }
    );

    // rest of your code here
}