Обратите внимание, что Array.from
принимает второй аргумент, который является функцией отображения - всякий раз, когда у вас есть Array.from
, за которым следует .map
, вы можете сжать это в один Array.from
.
Внутри функции mapper вам просто нужно проверить tagName
элемента, который вы перебираете:
return Array.from(
document.querySelectorAll('div > p, div > a, div> div > h1'),
elem => (
elem.tagName === 'A' ? elem.href : elem.innerText
)
);
Также обратите внимание, что когда вы используете строки, они должны быть заключены в разделители, такие как '
, "
или `
.(document.querySelectorAll(div > p, div > a, div> div > h1)
приведет к SyntaxError
)
Примечание: вы вероятно хотите textContent
вместо innerText
.innerText
- это причудливая, сложная в использовании версия textContent
в большинстве случаев.