Получить текст нескольких элементов как отдельные значения

Я пытаюсь собрать информацию из WEB, но если на одной странице есть 2 элемента, информация хранится в одной строке obj. Как хранить информацию в другой строке? код:

if (!error && response.statusCode == 200) {
  var $ = cheerio.load(html);
  $('#ctl00_MainContent_ipcAvaDay_upnlResultOutbound').each((e, el) => {
    var arrival_airport = $(el).find('.rowinfo2 td:nth-child(2)').text();
    var alio = [arrival_airport];

и я получаю console.info

[RigaRiga] 

вместо

[Riga]
[Riga]

может какие идеи?

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
806
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Когда text() вызывается для набора элементов, jQuery объединяет все значения в одну строку.

Если вы хотите создать массив всех отдельных значений, используйте map():

var arrival_airport = $(el).find('.rowinfo2 td:nth-child(2)').map(function() {
  return $(this).text();
}).get();
console.info(arrival_airport);

Хороший ответ, но нам, вероятно, следует прекратить использовать this в этих блоках, так как большинство людей перешли к стрелочным функциям, и это просто вызовет путаницу.

pguardiario 28.01.2019 09:57

Я бы сказал, что это совсем не так, тем более что IE вообще не поддерживает функции стрелок.

Rory McCrossan 28.01.2019 10:01

Хорошо, но учтите, что это вопрос cheerio. Этот код работает в node.js, а не в браузере.

pguardiario 28.01.2019 10:10

Просто для ясности: избежать this можно как в функциях до ES6, так и в функциях стрелок ES6 +:

До ES6 (без this):

var airports = $(el).find('.rowinfo2 td:nth-child(2)').map(function(i, el) {
  return $(el).text();
}).get();

ЭС6:

let airports = $(el).find('.rowinfo2 td:nth-child(2)').map((i, el) => $(el).text()).get()

Не используйте this в этих блоках, потому что это странно и вызывает путаницу.

Другие вопросы по теме