2016-07-16 9 views
-1

Google Scriptで複数のサブディレクトリフィードを解析しようとしています。このGoogle Script(redditFeeds())と呼ぶと、タイトル、リンク、日付がスプレッドシートに返されます。しかし、私は最新の投稿を最初に見ることができるように日付順に投稿を並べ替えたいです。私はさまざまな方法で配列の並べ替え()を使用しようとし、降順で何も並べ替えを取得することはできません。私は日付オブジェクトをDateオブジェクトに変換しようとしましたが、それは修正されませんでした。日付に基づいてjavascriptで配列を並べ替える

function redditFeeds() { 

    var entries_array = []; 
    var subreddit_array = ['https://www.reddit.com/r/funny/top/.rss','https://www.reddit.com/r/news/top/.rss'] 

    for (var s = 0; s < subreddit_array.length; s++) { 

    var xml = UrlFetchApp.fetch(subreddit_array[s]).getContentText(); 
    var document = XmlService.parse(xml); 
    var root = document.getRootElement(); 
    var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom'); 
    var entries = document.getRootElement().getChildren('entry', atom); 

    for (var i = 0; i < entries.length; i++) { 
     var title = entries[i].getChild('title', atom).getText(); 
     var title = entries[i].getChild('link', atom).getText(); 
     var link = entries[i].getChild('link', atom).getAttribute('href').getValue(); 
     var date = entries[i].getChild('updated', atom).getValue(); 
     entries_array.push([title, link, date]); 
    } 
    } 

    //return entries_array; 

    //doesn't work 
    //entries_array.sort(function(a,b) { 
    // return a.date - b.date; 
    //}); 

    //also not working 
    return entries_array.sort(function(a,b) { 
    new Date(a.date).getTime() - new Date(b.date).getTime(); 
    }); 

} 
+0

[JavaScriptオブジェクトの配列を並べ替える]の複製があります。(http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects) – Tibrogargan

答えて

2

私は、私はそれがないと思うようentries_arrayに見えると仮定すると、あなたは以下欲しいと思います。私はstartがあなたのコードに含まれていたとは思っていません...私はentries_arrayの各エントリーは3人のメンバーを持つ配列だと思います。それはnew Dateによって解析することができる一つだ場合、このコードは動作するはずです:

return entries_array.sort(function (a, b) { 
    return new Date(a[2]) - new Date(b[2]); 
}); 

それは正しくありません場合は、entries_arrayがどのように見えるかを共有してください。

+0

"start"はタイプミスであり、 "date"でなければなりませんでした。ありがとう! – Keith

+0

'date'も機能しませんでした。 – smarx

+0

さて、それはいずれの方法でも動作していなかった、ちょうどあなたが「スタート」について理にかなっていない点について回答したいと思った。 – Keith

1

私は内側のソート機能で、行方不明のリターンを見て、あなたはgetTimeを(必要はありません)

return entries_array.sort(function(a,b) { 
    return new Date(a.start) - new Date(b.start); 
    }); 
+1

これは本当ですが、私は 'a .start'と 'b.start'は' undefined 'なので、これで問題は解決しません。 – smarx

+0

確かにはい、OPの質問はソートに関連していましたが、データが有効かどうかはわかりませんでした。 – Massanu

0

日付オブジェクトを簡単にソートする方法は、dateObj.getTime()を使用してUNIXのタイムスタンプに変換することです。これは、1970年新年の深夜からの秒数を作成します。これは、複数のタイムゾーンで作業している場合に非常に便利です。

関連する問題