我有一个JavaScript函数,该函数返回Node或Element的数组,但其中包含重复项。我四处搜索并找到了获取数组唯一项的函数,但它似乎仅适用于字符串或简单类型,将其应用于DOM数组时,它什么也没做。我认为这与物品是对象有关。
使用ES6的Set作为某些答案表明是行不通的。另一个建议是使用过滤器功能检查项目是否在数组中已经有索引。同样,它们都不适用于DOM对象。
如果有人可以指出如何删除重复项,我将不胜感激。预先感谢!
更新
@Kroltan似乎已经理解我的意思,但是对于其他人来说,这是一个返回重复节点的函数:
function (
selector) {
const children = Array.from(this.parent().children).filter((
v) => v !== this);
if (!selector) {
return children;
}
return children.filter((
v) => v.matches && v.matches(selector));
}
如果我要做类似$("div")
的事情,那么根据嵌套,我会得到很多重复项。我想缩小返回的节点数组,使其没有与jQuery的实现方式类似的重复项。这是我的版本(1)和jQuery的版本(2)的示例屏幕截图。我想让它们匹配。
更新2
弄清楚了。 Set
解决方案有效,但是我将其应用于错误的数组,因此没有看到期望的结果。现在,我将其应用于正确的数组,可以正常工作,想象一下...:)
答案 0 :(得分:-1)
这些解决方案确实有效。但是他们遵循参照相等的原则。
您可能正在寻找删除结构重复项(例如,一堆<br>
元素之类的技巧),这一点比较棘手,您必须为它们的相等性确定一个标准你自己类似于here。 (检查其来源以了解其工作原理!)