Получить текст нескольких элементов в виде отдельных значений - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь собрать информацию из 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.log, который я получаю, -

[RigaRiga] 

вместо

[Riga]
[Riga]

может быть, есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Просто для ясности, избегать this можно в Pre-ES6, а также с помощью стрелок ES6 +:

Pre-ES6 (нет this):

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

ES6:

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

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

0 голосов
/ 27 января 2019

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

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

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