Как сделать проверку на существования атрибута, в методе мап?
Перебираю элементы вот таким образом
const img = await page.evaluate(() => {
return [...document.querySelectorAll('section > a')].filter((value, index) => index > 2).map(i => ({
img: i.querySelector('div > div > div > img:nth-child(2)').getAttribute('data-src')}))
})
Ну проблема в том, что не у всех айтемов есть getAttribute и я получаю ошибку, что атрибут нал Как можно сделать проверку, что если атрибута нет, я мог записать "Картинка не найдена" Я уже и через иф пробовал и через тернарный оператор ?:, просто не приложу ума как ту это можно сделать
Ответы (2 шт):
Автор решения: alezhu
→ Ссылка
Как-то типа так:
var item;
const value = ((item = document.querySelector('div')) && item.getAttribute && item.getAttribute('data-src')) || 'blablabla';
Автор решения: Pavel Nazarian
→ Ссылка
let images = document.querySelectorAll('img');
//варианта первый
let data = [...images].map(image => {
let src = image.hasAttribute('data-src') ? image.getAttribute('data-src') : 'нет картинки';
return {img:src};
})
//варианта второй
let data1 = [...images].map(image => {
return {img:image.getAttribute('data-src') || 'нет картинки'};
})
console.log(data);
console.log(data1);
<img data-src='qwe'>
<img data-src='qwe'>
<img data-src='qwe'>
<img>
<img data-src='qwe'>
<img>