【问题标题】:filter an HTML-elements filled array (javascript) [duplicate]过滤HTML元素填充数组(javascript)[重复]
【发布时间】:2021-04-24 14:25:09
【问题描述】:

我有两个都包含 HTML 元素的数组,我想从第一个数组中删除第二个数组中也存在的所有元素。

var a = [document.createElement('div'), document.createElement('span')],
    b = [document.createElement('span'), document.createElement('p')];

filter(a,b) == [document.createElement('span')] // true

我试过这样的东西,但它似乎不起作用:

var filter = function(a,b) {
   return a.filter(element => {
      return b.map(element_ => {
         return element.isEqualNode(element_);
      }).includes(false);
   });
}

【问题讨论】:

  • a.filter(element => !b.includes(element));
  • @Tigger 否,因为我认为使用 DOM HTML 元素无法使用 == 检查相等性

标签: javascript dom


【解决方案1】:
let res = a.filter((el)=> { return b.find((el2)=> el.localName === el2.localName)});

// res = [span];

所以,el.localName 是包含元素名称的字符串类型 HTML 元素的属性。可用于比较两个 HTML 元素

例如:在 div 的情况下,它的 'div'

代码返回两个数组中存在的公共元素。

【讨论】:

  • 您好,欢迎来到 SO!虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。请阅读tourHow do I write a good answer?
  • 你能更准确地解释你的代码是如何工作的吗?
  • @Giuppox 让我知道它是否适合您?
  • 是的!它有效,谢谢:)。你知道在箭头函数中,如果只有一个参数,可以去掉括号吗?
  • 是的,我可以期待我的 ans 得到支持吗?
猜你喜欢
  • 2017-04-22
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2015-08-15
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多