目前我有一些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,我愿意学习。愿意指向正确的方向,而不仅仅是给出答案。
答案 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)。
我使用localeCompare
(https://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
}