• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

198
Views
¿Cómo puedo iterar a través de una matriz?

Tengo una matriz llamada tablas que necesito iterar, pero en mi código actual está iterando y luego deteniéndose en el primer índice de la matriz ignorando el resto de los valores de la matriz.

Mi código:

 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();

mi resultado:

 8 UK 8 Germany 8 Russia 8 Italy 8 France 8 Switzerland 8 Czech Republic 8 Ireland 8 Portugal

Entonces, los valores 12,16,20,24 en mi matriz de tablas no se iteran, ¿cómo puedo solucionar esto?

over 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

En realidad, nunca asigna true a scrapeStatus .

este codigo

 if (res.country == null || res.country === undefined) { scrapeStatus == true; break; }

Debería verse así:

 if (res.country == null || res.country === undefined) { scrapeStatus = true; }

1- La cláusula while se romperá cuando scrapeStatus sea verdadero de acuerdo con su código. No es necesario agregar un descanso.

2- Asigne true a scrapeStatus en lugar de verificar si es true .

over 3 years ago · Juan Pablo Isaza Report

0

Tienes dos bucles. El bucle jQuery each() está dentro del bucle tables.forEach() , lo que significa que recorrerá todos los elementos con el mismo elemento de la matriz de tablas.

Para solucionar esto, debe itirar la matriz de tablas dentro del bucle each() , algo así:

 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(); });
over 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error