【问题标题】:find and merge duplicate match with array in javascript在javascript中查找并合并与数组的重复匹配
【发布时间】:2017-09-21 05:52:05
【问题描述】:

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

阵列积

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 ]
    ]

最终产品

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] 并删除 [2] 的第三个索引。 arrProduct 索引 5 有两个公共值 5 和 6,它也在索引 6 中,因此它可能合并为 1 并变为“4,5,6,7”等等......

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

希望读者能有足够的了解。

【问题讨论】:

  • 你有没有尝试过?
  • 是的,实际上我对数据进行了处理并找到了重复的数据。这是这些事件的数组。
  • 请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。
  • 您能否在问题中也包含该代码?
  • 具体输出中[ 4, 5, 6, 7, 10, 11 ],的逻辑是什么

标签: javascript arrays


【解决方案1】:

基本上,您可以在结果集中搜索现有项目并将具有相同项目的数组连接起来。

物品的顺序与外观一致。

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);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 2021-01-18
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2016-05-27
    相关资源
    最近更新 更多