javascript-将forEach回调参数与函数参数结合

我正在尝试将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]);
})

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...