我想找到两个数组之间的对称差异。 此实现有效,但是我想编写一个仅针对两个数组的函数,而不是找到一组数组之间的对称差异的函数。函数应该是这样的:
function diffArray(arr1, arr2) { }
然后返回一个具有对称差异的新数组。
到目前为止我最好的尝试是
var newArr = [];
for (var i = 0; i < arr1.length; i++){
var x = arr[i];
for (var n = 0; n < arr2.length; n++){
var y = arr2[n];
if (y === x){
break;
} else {
newArr.push(y);
}
}
}
但是,我知道这还不算接近。这个问题(它是 FreeCodeCamp 的算法问题)提示在实现中使用方法 array.filter()、array.indexOf()、array.concat()、array.slice()。我知道一般的想法是获取一个数组中的每个元素(在我的例子中是第一个),然后将它与第二个数组中的每个元素进行比较。如果未找到匹配项,则将该元素推入 newArr。
任何人都可以帮助使用上述方法并提供关于其工作原理的可靠解释/评论吗?
谢谢!