0

簡単な質問ですが、場所は常にブレントウッド、スマーナ、スプリング ヒルになりますが、この順序で利用可能な時間を常にリストに入力することはできますか? 現在、場所は利用可能な時間に基づいて変更されます。つまり、Smyrna の場所に次に利用可能な時間があれば、最初にリストされます。–</p>

JSON ファイルへのリンクhttps://www.inquicker.com/facility/americas-family-doctors.json

ここに私のフィドル リンクがあります: http://jsfiddle.net/qUvuB/11/以下のコードの場合、およびここに、場所、医師、および時間を示すコードの私のフィドル リンクがあります: jsfiddle.net/mccannf/qUvuB/ 6/

これは私がこれまでに持っているコードです:

これについて何か助けていただければ幸いです。

<!DOCTYPE html>
<html>
<head>
<title>AFD TEST MOD</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
<script>
$(document).ready(function(){
$.getJSON('https://www.inquicker.com/facility/americas-family-doctors.json',
    function(data){

        var earliest = {};
        var doctor = {};
        var links = {};
        $.each(data.schedules, function(i, name) {
            var location = name.name.split(' - ')[0];
            var dr_name = name.name.split(' - ')[1];
            if (name.available_times.length) {
               if (location in earliest) {   // location has already been stored.
                  var newTime = parseAvailableDate(name.available_times[0].when);
                  if (newTime.isBefore(earliest[location])) {
                     earliest[location] = newTime;
                     doctor[location] = dr_name;  
                     links[location] = name.available_times[0].url;
                  }                    
               }
               else {
                  earliest[location] =     parseAvailableDate(name.available_times[0].when); 
                  doctor[location] = dr_name; 
                  links[location] = name.available_times[0].url;                       
               } 
           }                    
        });
        for (i in earliest) {
            $("#names").append("<li><a href='"+links[i]+"'>"+earliest[i].toString("dd/yyyy h:mm tt")+"</a></li>");         
        }
});
});

function parseAvailableDate(dateString) {
var trimmedString = dateString.replace(/^\s\s*/, '');
var avTime=trimmedString.split(' ')[0],
    ampm=trimmedString.split(' ')[1],
    avDay=trimmedString.split(' ')[2];
var avDate = Date.parse("next "+avDay);
avDate.addHours(avTime.split(':')[0]).addMinutes(avTime.split(':')[1]);
if (ampm == "pm" && avTime.split(':')[0] != "12") avDate.addHours(12);

return avDate;
}   
</script>
</head>
<body>
<ul id="names"></ul>
</body>
</html>
4

1 に答える 1

1

場所を配列に保存します。

var locations = [];

そうすれば、簡単に並べ替えを行うことができます。

locations.sort();

もちろん、これによりコードの他の部分が変更されますが、これは標準の配列操作であり、自分で理解できるはずです。例えば:

for (i in earliest)

(正しい順序を取得するために)になります:

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

または、jQueryを使用

$.each(locations, function(i,location){...})
于 2012-12-12T00:43:57.440 に答える