[英]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.