我正在尝试比较两个数组并返回一个新数组,其中只有在两个给定数组中的一个中找到的任何项,但不是两者。换句话说,返回两个数组的对称差异。
我的代码:
function diffArray(arr1, arr2) {
var newArr = [];
var arr = arr1.concat(arr2);
for(var i = 0; i < arr.length; i++)
{
for(var j = (arr.length - 1); j <= 0; j--)
{
if(i == j)
{
continue;
}
else if(arr[i] === arr[j])
{
break;
}
else
{
newArr.push(arr[i]);
}
}
}
// Same, same; but different.
return newArr;
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
我的解决方案出了什么问题?
答案 0 :(得分:3)
使用ES6功能的替代,清洁解决方案。
const diffArray = (arr1, arr2) => {
const a = arr1.filter(v => !arr2.includes(v));
const b = arr2.filter(v => !arr1.includes(v));
return [...a, ...b];
}
console.log(diffArray([1, 2, 3, 5, 6], [1, 2, 3, 4, 5]));