Я пытаюсь объединить параметр обратного вызова forEach
(HTMLAnchorElement
/ HTMLTableCellElement
объекты) с параметром функции (string
).
Что я делаю, так это получаю href
тега a
в одном вызове функции, а затем textContent
тега td
в другом вызове функции, используя ту же функцию.
Вот мой код:
// example usage of function
await scraper.scraper(args, 'a[href]', 'href') // get href
await scraper.scraper(args, 'table tr td', 'textContent') // get textContent
// scraper function
const scraper = async (urls, regex, property) => {
const promises = []
const links = []
urls.forEach(async url => {
promises.push(fetchUrls(url))
})
const promise = await Promise.all(promises)
promise.forEach(html => {
const arr = Array.from(new JSDOM(html).window.document.querySelectorAll(regex))
arr.forEach(tag => {
links.push(tag.href) // how about textContent?
})
})
return links
}
Есть ли способ, как объединить параметр обратного вызова tag
из forEach
с параметром функции property
?
Код ниже работает.Но что если я захочу сделать еще один вызов функции для других свойств?Я не хочу добавлять оператор if каждый раз, когда я делаю другой вызов функции, такой вид не позволяет использовать мою функцию повторно.
property === 'textContent' ? links.push(tag.textContent) : links.push(tag.href)
Любая попытка объединитьдва, кажется, идут не так, как надо.Разве это не возможно?