2015-02-08 24 views
0

var Bible = JSON.parse(fs.readFileSync(bible.json, 'utf8')); _.each(Bible, function (b, Book) { return Book; });的Javascript:_.each環

本聖經(前創世記,出埃及記,利未記等)輸出每本書的名字中排序解析的JSON。問題是來自JSON文件的書籍不合適。我試圖以各種方式對它們進行排序,但在_.each循環內似乎沒有可能。當我這樣做:

correctlyOrderedList.indexOf(Book) - correctlyOrderedList.indexOf(b);

它正確返回每個人的指數,但我仍然不能據我所知整理之內)。每個迴路。有沒有一種方法可以在_.each循環之前對它進行排序,還是有辦法對它進行排序?

+0

嘗試'_.each(_排序(聖經),功能(..。 ){...})' – thefourtheye 2015-02-08 15:09:03

回答

1

您不能在each內排序,因爲這太晚了。 但是你可以使用_.each之前進行排序:

var Bible = JSON.parse(fs.readFileSync(bible.json, 'utf8')); 
Bible.sort(); // sorts in place 
_.each(Bible, function (b, Book) { 
    return Book; 
}); 

或者通過分類值作爲參數傳遞給each

var Bible = JSON.parse(fs.readFileSync(bible.json, 'utf8')); 
_.each(Bible.sort(), function (b, Book) { 
    return Book; 
}); 
+0

這工作。就我而言,我不得不處理聖經變量,因爲它是一個對象。通過一對夫婦循環傳遞後,我能夠從原始對象中生成一個可排序的數組。 '''var index = []; var correctOrder = canon.OT + canon.NT; (book in Bible){index.push([book]);}; for(var b = 0,book,bible = []; book = index [b]; ++ b){bible.push(book [0]);}; 排序並準備好去:'_.each(bible,function(((),(());書){返回書});' – BarryMode 2015-02-09 15:51:18

+0

這可能比它需要更混亂,但這是迄今爲止我能想出的最好的。我試圖讓它不那麼美味。你的答案絕對是我需要的,但我只需要弄清楚如何將對象轉換爲數組(我認爲這就是我所做的)。 – BarryMode 2015-02-09 15:57:24

+0

在諮詢了其他一些堆棧溢出的答案之後,我發現下劃線有一種方法可以將鍵放入數組中!這對於很久以前就已經瞭解很大,但我想這是學習的一部分。這是我清理的版本: '_.keys(Bible).sort(function(a,b){return correctOrder.indexOf(a)--correctOrder.indexOf(b);}); bible.forEach(函數getBooks(Book){return Book});' – BarryMode 2015-02-09 16:22:23