关于javascript:排序JSON列表?

sorting a json list?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Sorting objects in an array by a field value in JavaScript

1
2
3
4
5
6
7
 var myData = [
                  {"Identifier":1,"Naam":"Van Der Valk","Adres":"Europaweg 218","Postcode":"1238AC","Plaats":"Zoetermeer","Longitude":"4.48822","Latitude":"52.06258","Status":"Laadpunten Beschikbaar","lunch":"true","diner":"true","meet":"true","wifi":"true","Distance":"10.1"},
                  {"Identifier":2,"Naam":"Meram place","Adres":"NOT Given 1","Postcode":"0000LL","Plaats":"Rotterdam","Longitude":"4.48178","Latitude":"51.92422","lunch":"false","Distance":"181"},
                  {"Identifier":3,"Naam":"Station Zwolle","Adres":"NOT Given 6","Postcode":"0000LL","Plaats":"Zwolle","Longitude":"6.08302","Latitude":"52.51677","lunch":"false","Distance":"5.1"},
                  {"Identifier":4,"Naam":"Pompstation Shell","Adres":"NOT Given 1","Postcode":"0000LL","Plaats":"Den Haag","Longitude":"4.30070","Latitude":"52.07050","lunch":"false"},
                  {"Identifier":5,"Naam":"Amsterdam Arena","Adres":"NOT Given 218","Postcode":"0000LL","Plaats":"Amsterdam","Longitude":"4.89517","Latitude":"52.37022","lunch":"true","diner":"true","wifi":"true","meet":"true","Distance":"34.2"}
                  ];

我有一个问题,因为我有上述JSON。我想把这个附加到一个列表中,即ul li。怎样才能用最短距离的单子等来订购单子呢?


那不是JSON。它已经是一个对象的javascript数组,所以您只需要使用.sort()

1
2
3
myData.sort(function(a, b) {
    return (+a.Distance || 0) - (+b.Distance || 0);
});

注意,如果.Distance的数字转换失败,我将替换0

请阅读.sort()的MDN文档以了解有关对javascript数组排序的更多信息。

要创建元素,可以使用$.each()迭代器循环排序的数组。

1
2
3
4
5
6
7
8
9
var list = $("#mylist");

$.each(myData, function(i, obj) {
    $("
<li>
"
, {
         text: obj.Naam +": Distance -" + obj.Distance
    }).appendTo(list);
});