【发布时间】:2023-03-27 07:41:02
【问题描述】:
这应该是一个简单的算法,但我无法理解逻辑。我需要获取 2 个数组并只保留在一个数组或另一个数组中找到的值,而不是两者。
例如,如果我有
arr1 [1,2,3,6]
arr2 [2,3,4,5,7]
我想再次拥有 2 个数组
arr1 [1,6]
arr2 [4,5,7]
编辑:
我删除了我的旧代码并放入了一些其他工作代码。仍然不是很漂亮,但至少可以工作。我需要做的就是将 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)
{
arr4.push(arr1[i]);
}
}
//find all arr2 elements not in arr1
//store in arr3
for(var i=0; i<arr2.length; i++)
{
foundMatch = false;
for(var j=0; j<arr1.length; j++)
{
if(arr2[i] == arr1[j])
{
console.log("match found for [%s] [%s]", i, j);
foundMatch = true;
break;
}
}
if(!foundMatch)
{
arr3.push(arr2[i]);
}
}
【问题讨论】:
-
不要重新发明轮子:ramdajs.com/docs/#difference
-
另请注意,将非重复值推送到新数组中比拼接现有值要容易得多......
-
我并不完全希望将对称差异放入单个数组中。我希望每个数组保持它们不匹配的值。
-
@JaredSmith 我很欣赏 ramdajs 的链接。
标签: javascript arrays algorithm symmetric-difference