2017-04-01 26 views
3

我读一个JSON文件,该文件是这样的:JavaScript的进口JSON数据 - 循环排序由经度/纬度位置

[ 
    { 
     "name":"Mark Brown", 
     "location":{ 
      "lat":50.72423653147234, 
      "lon":-0.6552093628538713 
      } 
    }, 

    { 
     "name":"Nina Wright", 
     "location":{ 
      "lat":51.00351657212984, 
      "lon":0.4104543851588729 
     } 
    } 

] 

然后,我有一个循环,将显示我的网页上的列表中的数据。

$.getJSON(JsonFile, function(List){ 

    var div = document.getElementById('list'); 

    for(var i = 0; i < List.length;i++) { 

     div.innerHTML = div.innerHTML + '<li>'+List[i].name+'</li>'; 

    } 


}); 

这将列表附加到<ul id="List"></ul>

这一切工作很好,但我需要做的是将数据追加到我的网页之前订购由DESC顺序位置数据

我该怎么做?

+0

你是什么意思的位置?首先由拉特然后由lon? –

+0

您可能需要编写自定义比较器函数并使用内置的javascript进行排序。查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort了解更多详情 – jas7457

+0

基本上在循环内我使用var result = checkDistance(fixedlat,fixedlon,数据[I] .location.lat,数据[I] .location.lon); if(result <= 20){...然后我得到这个列表,但是我需要按照某个顺序的位置来排序结果 – JakeBrown777

回答

0

您需要使用距离增量的排序回调。

data.sort(function (a, b) { 
    return (
     checkDistance(fixedlat, fixedlon, a.location.lat, a‌​.location.lon) - 
     checkDistance(fixedlat, fixedlon, b.location.lat, b‌​.location.lon) 
    ); 
});