合并两个没有重复的节点列表

约旦

我尝试将两个节点列表合并为一个,但是当我在一个数组中合并时,同一节点有两次。Concat不搜索数组中是否已存在要插入的节点...

var firstNodelist = document.querySelectorAll("#outter, #inner");
var finalArray = new Array();

for (var i = 0; i < firstNodelist.length; i++) {

    var secondNodelist = firstNodelist[i].querySelectorAll("div");

    var firstArray = new Array();

    for (var x = 0; x < secondNodelist.length; x++) {

        firstArray.push(secondNodelist[x]);

    }

    finalArray = finalArray.concat(firstArray)

}

console.log("FINAL", finalArray);

jsfiddle示例

TJ人群

与其在循环内构建另一个不必要的数组,不如使用该内部循环来检查节点是否已经在数组中(Array#indexOf在所有现代浏览器中),并仅在不存在时添加它。

var firstNodelist = document.querySelectorAll("#outter, #inner");
var finalArray = []; // `[]` rather than `new Array()`

for (var i = 0; i < firstNodelist.length; i++) {

    var secondNodelist = firstNodelist[i].querySelectorAll("div");

    for (var x = 0; x < secondNodelist.length; x++) {

        // Get this node
        var node = secondNodeList[x];

        // Is it in the array already?
        if (finalArray.indexOf(node) === -1) {
            // No, put it there
            finalArray.push(node);
        }

    }
}

console.log("FINAL", finalArray);

确保测试您的目标环境以确保它们具有Array#indexOf


话虽如此,有应该是一个更好的方法的具体情况:活生生的例子| 现场直播

var finalArray = Array.prototype.slice.call(
    document.querySelectorAll("#outter div, #inner div")
);

...因为querySelectorAll相同的节点即使在#inner内部也不会多次包含#outter(反之亦然)。(这Array.prototype.slice.call(someObject)是从任何类似数组的对象中获取真实数组的技巧。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

合并两个没有重复的节点列表

来自分类Dev

合并两个没有重复的列表

来自分类Dev

合并两个没有伪重复的文件

来自分类Dev

java合并两个没有重复的通量

来自分类Dev

将两个列表合并为一个没有重复元素的保留顺序

来自分类Dev

如何加入两个没有重复的元组列表

来自分类Dev

两个列表之间没有重复的公共元素

来自分类Dev

两个如何将两个查询合并到一个没有重复的结果集中?

来自分类Dev

合并两个没有重复值的数据表

来自分类Dev

Java-合并两个没有重复的数组(不允许使用库)

来自分类Dev

合并两个具有差异值的相同类型的列表并避免重复

来自分类Dev

合并两个列表,同时删除重复项

来自分类Dev

合并两个具有重复结果的表

来自分类Dev

合并两个列表

来自分类Dev

合并 2 个对象列表,没有重复,基于比较

来自分类Dev

cassandra中的两个节点没有互相闲聊

来自分类Dev

合并两个对象而没有覆盖

来自分类Dev

合并两个没有熊猫的CSV

来自分类Dev

合并两个没有熊猫的CSV

来自分类Dev

FFMPEG合并两个没有音频的视频

来自分类Dev

合并两个没有公共列的数据框

来自分类Dev

合并/合并两个Erlang列表

来自分类Dev

合并/合并两个Erlang列表

来自分类Dev

R:合并两个具有相同列名的列表

来自分类Dev

如何合并两个具有字典的列表

来自分类Dev

在两个表上的mysql查询而没有重复

来自分类Dev

比较两个没有重复的数据框

来自分类Dev

两个嵌套的for / loop,没有重复的对

来自分类Dev

从元组集中添加两个列表时,有没有办法防止出现重复项?