标签: symmetric-difference

尝试使用Javascript解决对称差异

我试图找到一个使用javascript实现以下目标的对称差异的解决方案:

  • 接受一个未指定数量的数组作为参数
  • 保留数组中数字的原始顺序
  • 不会删除单个数组中的重复数字
  • 删除跨阵列发生的重复项

因此,例如,如果输入是([1,1,2,6],[2,3,5],[2,3,4]),解决方案将是,[1,1,6,5] ,4].

我试图解决这个问题,因为在线编码社区提出了挑战.挑战状态的确切说明,

创建一个带有两个或更多数组的函数,并返回所提供数组的对称差异数组.

数学术语对称差异是指两组中的元素,它们在第一组或第二组中,但不在两者中.

虽然我的解决方案下面找到了每个数组唯一的数字,但它会消除所有出现多次的数字,并且不会保持数字的顺序.

我的问题非常接近于在javascript中找到多个数组中的对称差异/唯一元素的问题.但是,该解决方案不保留数字的原始顺序,也不保留单个数组中出现的唯一数字的重复.

function sym(args){
    var arr = [];
    var result = [];
    var units;
    var index = {};
    for(var i in arguments){
        units = arguments[i];

    for(var j = 0; j < units.length; j++){
         arr.push(units[j]);
        }
    }

    arr.forEach(function(a){
        if(!index[a]){
            index[a] = 0;
        }
            index[a]++;

    });

       for(var l in index){
           if(index[l] === 1){
               result.push(+l);
           }
       }

    return result;
}
symsym([1, 1, 2, 6], [2, 3, 5], [2, 3, 4]); // …
Run Code Online (Sandbox Code Playgroud)

javascript arrays symmetric-difference

14
推荐指数
4
解决办法
1万
查看次数

在R中找到对称差异(交叉点的对面)的函数?

问题

我有两个不同长度的字符串向量.每个向量都有一组不同的字符串.我想找到一个向量但不在两个向量中的字符串; 也就是说,对称差异.

分析

我查看了函数setdiff,但其输出取决于向量的考虑顺序.我发现自定义函数outersect,但是这个函数要求两个向量具有相同的长度.

有什么建议?

更正

这个问题似乎与我工作的数据有关.否则,下面的答案解决了我在这篇文章中提到的问题.我会看看我的数据有什么独特之处,如果我学到任何可能对其他用户有帮助的东西,我会回复.

r xor set-difference intersect symmetric-difference

5
推荐指数
2
解决办法
3286
查看次数

比较 2 个数组的差异(找到对称差异)

这应该是一个简单的算法,但我无法理解其中的逻辑。我需要采用 2 个数组,并仅保留在一个数组或另一个数组中找到的值,而不是同时保留两者。

例如,如果我有

arr1 [1,2,3,6]

arr2 [2,3,4,5,7]
Run Code Online (Sandbox Code Playgroud)

我想要再次有 2 个数组

arr1 [1,6]
arr2 [4,5,7]
Run Code Online (Sandbox Code Playgroud)

编辑:

我删除了旧代码并放入了一些其他工作代码。仍然不是很漂亮,但至少可以工作。我需要做的就是将 arr3 存储到 arr1 中,将 arr4 存储到 arr2 中。

    var arr3 = [];
    var arr4 = [];

    var foundMatch = false;

    //find all arr1 elements that don't match arr2 elements
    //store into arr4
    for(var i=0; i<arr1.length; i++)
    {
        foundMatch = false;
        for(var j=0; j<arr2.length; j++)
        {
            if(arr1[i] == arr2[j])
            {
                console.log("match found for [%s] [%s]", i, j);
                foundMatch = true;
                break;
            }
        }
        if(!foundMatch) …
Run Code Online (Sandbox Code Playgroud)

javascript arrays algorithm symmetric-difference

5
推荐指数
1
解决办法
596
查看次数

Python集:difference()vs symmetric_difference()

python 集合中的difference()symmetric_difference()方法之间有什么区别?

python set-difference symmetric-difference

5
推荐指数
2
解决办法
5033
查看次数