簡體   English   中英

如何遍歷數組?

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

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