簡體   English   中英

保持列表node.js的順序

[英]Keep the order of list node.js

我正在遍歷一個對象(我也嘗試過使用數組)並構建一個URL列表。 我試圖枚舉for ... in並使用for進行迭代,但是我一直在丟失訂單。

 var Model = require('./model');
        var Scraper = require('./scraper');
        var Pages = [];
        function generateUrls(limit) {
          var url = 'http://www.weatheronline.co.uk/SouthAfrica/';
          var urls = [];

          Cities = {
    'Windhoek'  : 'Windhoek',
    'GraaffReinet' : 'GraaffReinet',
    'Queenstown'  : 'Queenstown',
    'Bhisho'  : 'Bhisho',
};
    };

      for (City in Cities) {
        urls.push(url + Cities[City]);
      }
      return urls;
    }
    // store all urls in a global variable  
    Pages = generateUrls();
    function wizard() {
      // if the Pages array is empty, we are Done!!
      if (!Pages.length) {
        return console.log('Done!!!!');
      }

我如何保持訂單。 刮了一些天氣數據后,我在本地主機上顯示了數據表。 我將node.js與mongo,express和jade一起使用。

這是創建表的玉器代碼。

doctype html
html
  body
    table(style='width:100%')
      tr
        th City
        th Min
        th Max Day 1
        th Max Day 2
        th Max Day 3

      each city, i in Listings
       tr
        td 
         span= city.city
        td 
         span= city.min
        td 
         span= city.max
        td 
         span= city.maxday2
        td 
         span= city.maxday3

謝謝

確保您也閱讀了以下評論,因為其中包含相關信息!

對於in循環,不保證它們將以索引0到n的方式遍歷對象。 這里引用:

for ... in語句以任意順序遍歷對象的可枚舉屬性。

最近,我遇到了類似的問題,並通過在對象中包含一系列鍵字符串來解決此問題,該數組描述了我要在對象上進行迭代的順序。因此,當我要在對象上進行迭代時,我只進行了迭代使用for循環遍歷數組,然后使用obj [key]訪問鍵。

這有兩個缺點,首先,我必須編寫代碼以使obj和數組保持同步,因此在將事物添加到對象時,我需要代碼來更新數組。 另外,我還必須確保在循環中包含hasOwnProperty檢查,以確保我的數組中充滿了垃圾鍵。

它可能不是您正在尋找的解決方案,也不是您可以在您的方案中實現的解決方案,但它肯定對我有用。 祝好運!

[編輯]以防萬一我不清楚,這里是一個代碼示例:

var obj = { 
    Test1: 1,
    Test3: 3,
    Test2: 2,
    propNames: ['Test1', 'Test2', 'Test3']
};

for(var i = 0; i < obj.propNames.length; i++) {
    if (!obj.hasOwnProperty(obj.propNames[i])) continue;

    console.log(obj.propNames[i] + ": " + obj[obj.propNames[i]]);
}

// OUTPUT
// Test1: 1
// Test2: 2
// Test3: 3

我發現了問題...這產生了一個新問題。 但是我可以忍受這個新問題。 我在原始問題中未發布的一部分代碼是...

var numberOfParallelRequests = 20;
    for (var i = 0; i < numberOfParallelRequests; i++) {
      wizard();
    }

這就是問題所在。 它以任意順序同時發出20個請求。 如果我將其設置為1,則它將一一列出。 現在的新問題是它非常緩慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM