кукловод паутина условные операторы if - PullRequest
0 голосов
/ 23 марта 2020

Удаление таблицы ... Каждое название страны находится в теге <a>, но некоторые нет. При изменении структуры программа вылетает

Код =>

enter image description here

Выход =>

enter image description here

Я попытался сделать следующее

const countryName = e.children[1].children[0].children[0].data || 'hello world'

Это не работает, но также я попытался с IfStatement

const countryName = e.children[1].children[0].children[0].data
if (countryName === undefined) {
   countryName = 'hello world'
}

Это тоже не сработало, та же ошибка вывода.

Я знаю, что означает ошибка ... Я знаю, что структура HTML не такая, но она не будет читать условия что я реализую, чтобы дать переменной countryName ее значение

Любые идеи?

PD: Тот же вывод с cheerio js

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Вы проверяете на undefined слишком поздно: любой children может быть undefined, и индексирование этого undefined с помощью [0] может вызвать ошибку.

Если ваш Node.js (V8) или перемещая опоры необязательное сцепление и nulli sh объединение , вы можете сделать это:

const countryName = e?.children?.[1]?.children?.[0]?.children?.[0]?.data ?? 'hello world';

В противном случае вам понадобится:

const countryName =
  e &&
  e.children &&
  e.children[1] &&
  e.children[1].children &&
  e.children[1].children[0] &&
  e.children[1].children[0].children &&
  e.children[1].children[0].children[0] &&
  e.children[1].children[0].children[0].data ||
  'hello world';

0 голосов
/ 23 марта 2020

Вы, вероятно, хотите что-то вроде:

$(e).find('a').first().text() || 'hello world'

Вы почти никогда не хотите прибегать к помощи детей с cheerio.

...