1

2 つのフィードを結合して画面に表示する次のスクリプトがあります。

$.when( //get feed 1, //get feed 2 ).done(function(a1, a2){

    var data = a1[0]response.Data.feed.entries.concat(a2[0].responseData.feed.entries);

    var sorted = data.sort(function(a, b) {
        if(a.publishedDate > b.publishedDate) {
            return 1
        }
        if(a.publishedDate < b.publishedDate) {
            return -1
        }
        return 0
    });

    for( i = o; i <= sorted.length - 1; i++ ) {
        document.write(sorted[i].title);
        document.write(sorted[i].publishedDate);
    }

});

これはすべての行を返しますが、行を並べ替えません。並べ替えは完全にランダムに見えます。JSONデータでは日付が次のようにフォーマットされているためだと思います。

Mon, 23 Sep 2013 04:37:45 -0700
  1. -0700それはどういう意味ですか
  2. 結果を正しくソートできるように、その日付文字列を適切な日付オブジェクトに変換するにはどうすればよいですか?
4

3 に答える 3

1

に文字列を渡してnew Date(...)、実際のDateオブジェクトに変換できます。

ただし、並べ替えるには、特定の並べ替え関数を渡す必要もあります。これはsort、配列のデフォルトの Javascript が要素を文字列に変換し、変換の結果を比較するためです (したがって、任意の"Mon"日が任意の日の前に配置されます"Sun")。

動作するはずの何かは

dates.sort(function(a, b){ return a - b; });
于 2013-09-23T14:42:50.450 に答える