标签:node-js foreach jsdom javascript
我正在尝试将forEach回调参数(HTMLAnchorElement / HTMLTableCellElement对象)与功能参数(字符串)结合在一起.
我正在做的是使用同一函数在一个函数调用中获取标签的href,然后在另一函数调用中获取td标签的textContent.
这是我的代码:
// 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
}
有没有办法将来自forEach的回调参数标签与函数parameter属性结合在一起?
下面的代码有效.但是,如果我想对其他属性进行进一步的函数调用怎么办?我不想在每次调用另一个函数时都添加一个if语句,这破坏了我函数的可重用性.
属性===’textContent’吗? links.push(tag.textContent):links.push(tag.href)
试图将两者结合的任何尝试似乎都是错误的.不可能吗
解决方法:
使用传入的属性值作为el对象的计算键(代码中的标记),以便根据传入的属性动态地传递forEach内部元素的属性值
arr.forEach(el => {
links.push(el[property]);
})
标签:node-js,foreach,jsdom,javascript 来源: https://codeday.me/bug/20191211/2106709.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。