【发布时间】:2019-02-09 19:26:25
【问题描述】:
我有一个 JavaScript 函数,它返回一个节点或元素数组,但它包含重复项。我四处搜索并找到了获取数组唯一项的函数,但它似乎只适用于字符串或简单类型,当将其应用于 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 解决方案有效,但我将它应用到错误的数组,所以我没有看到我期望的结果。现在我将它应用于正确的数组,它可以工作,想象一下...... :)
【问题讨论】:
-
您能否发布一些示例代码,以便我们查看重复项是什么样的?我不知道 HTMLCollection 或 NodeList 会检索重复值
-
@Gup3rSuR4c 在哪个基础上重复?
-
我更新了我的问题,以展示我的意思/想要的更多内容。