[英]How can I iterate through an array?
我有一個稱為表的數組,我需要遍歷它,但在我當前的代碼中,它正在迭代,然后在數組的第一個索引處停止,忽略數組中值的 rest。
我的代碼:
async function scrapeSiteYield(){
var yield = [];
var country = [];
const yieldResult = await axios.get("https://tradingeconomics.com/forecast/government-bond-10y");
const $ = cheerio.load(yieldResult.data);
var tables = ["8","12","16","20","24"];
var count = 1;
tables.forEach(function (item, index) {
var scrapeStatus = false;
while (!scrapeStatus) {
var res = {};
$(`#aspnetForm > div.container > div > div > div:nth-child(${item}) > div > table > tbody > tr:nth-child(${count}) > td.datatable-item-first`).each((index, element) => {
console.log(item);
console.log($(element).text().trim());
res.country = $(element).text().trim();
});
if (res.country == null || res.country === undefined) {
scrapeStatus == true;
break;
}
else{
count++;
yield.push(res);
}
}
});
}
scrapeSiteYield();
我的結果:
8
UK
8
Germany
8
Russia
8
Italy
8
France
8
Switzerland
8
Czech Republic
8
Ireland
8
Portugal
所以我的表數組中的值 12,16,20,24 沒有被迭代,我該如何解決這個問題?
您實際上從未將true
分配給scrapeStatus
。
這段代碼
if (res.country == null || res.country === undefined) {
scrapeStatus == true;
break;
}
應該是這樣的:
if (res.country == null || res.country === undefined) {
scrapeStatus = true;
}
1- 根據您的代碼,當scrapeStatus
為 true 時, while
子句將中斷。 無需添加休息。
2-將true
分配給scrapeStatus
而不是檢查它是否為true
。
你有兩個循環。 jQuery 循環each()
在tables.forEach()
循環內,這意味着它將遍歷表數組中具有相同項目的所有元素。
要解決此問題,您需要在each()
循環中迭代表數組,如下所示:
elements.each((index, element) => {
let tableIndex = 0;
if(index < tables.length){
tableIndex = index;
}
console.log(tables[tableIndex]);
console.log($(element).text().trim());
res.country = $(element).text().trim();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.