发布
社区首页 >问答首页 >在javascript中查找并合并与数组的重复匹配

在javascript中查找并合并与数组的重复匹配
EN

Stack Overflow用户
提问于 2017-09-21 05:52:05
回答 1查看 89关注 0票数 1

下面是一个产品数组,它已在联系人数据上查找和处理,并创建可能出现的合并事件数组。在下面的arrProduct中,我希望过滤重复数组并与现有数组合并,最后创建一个名为arrFinalProduct的唯一数组产品。

阵列积

代码语言:javascript
代码运行次数:0
复制
arrProduct = 
    [ 
      [ 0 ],
      [ 1, 2 ],
      [ 2 ],
      [ 3 ],
      [ 4, 5, 6, 10 ],
      [ 5, 6, 7, 11 ],
      [ 6 ],
      [ 7, 11 ],
      [ 8 ],
      [ 9 ],
      [ 10 ],
      [ 11 ],
      [ 12 ],
      [ 13, 14 ],
      [ 14 ]
    ]

最终产品

代码语言:javascript
代码运行次数:0
复制
arrFinalProduct = 
    [ 
      [ 0 ],
      [ 1, 2 ],
      [ 3 ],
      [ 4, 5, 6, 7, 10, 11 ],
      [ 8 ],
      [ 9 ],
      [ 12 ],
      [ 13, 14 ]
    ]

arrProduct是产品数组,arrFinalProduct是最终产品数组。基本的逻辑是,如果从数组中找到匹配的情况,则需要合并数组。

假设在arrProduct中的任何索引中都没有0,所以它不合并和推入arrFinalProduct,arrProduct值2在第1和第2索引上被发现,因此它可以与1索引合并,成为1,2并删除2的第3索引。arrProduct索引5有两个共同的值5和6,在索引6中也是如此,因此它可以合并为1,成为"4,5,6,7“等等。

这个过程将递归地处理数据,直到我从数组中找到唯一的值。因此,它可能会水平地合并数组。

希望读者能有一个足够的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-21 07:35:32

基本上,您可以在结果集中搜索现有项,并使用相同的项连接数组。

项目的顺序与外观相同。

代码语言:javascript
代码运行次数:0
复制
var array = [[0], [1, 2], [2], [3], [4, 5, 6, 10], [5, 6, 7, 11], [6], [7, 11], [8], [9], [10], [11], [12], [13, 14], [14]],
    result = array.reduce(function (r, a) {
        r.some(function (b, i, bb) {
            if (a.some(c => b.includes(c))) {
                bb[i] = [...new Set(b.concat(a))];
                return true;
            }
        }) || r.push(a);
        return r;
    }, []);

console.log(result);
代码语言:javascript
代码运行次数:0
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46336358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档