比较两个数组并返回一个新数组,包含所有只在其中一个数组中出现的元素,排除两个数组都存在的元素。 换言之,我们需要返回两个数组的对称差。
**注意:**返回数组中的元素顺序不会影响挑战的测试结果。
第一种方法
function diffArray(arr1, arr2) {var newArr = [];function onlyInFirst(first, second) {// Looping through an array to find elements that don't exist in another arrayfor (var i = 0; i < first.length; i++) {if (second.indexOf(first[i]) === -1) {// Pushing the elements unique to first to newArrnewArr.push(first[i]);}}}onlyInFirst(arr1, arr2);onlyInFirst(arr2, arr1);return newArr;
}diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
第二种方法
function diffArray(arr1, arr2) {return arr1.concat(arr2).filter(item => !arr1.includes(item) || !arr2.includes(item));
}diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
第三种方法
function diffArray(arr1, arr2) {return [...diff(arr1, arr2), ...diff(arr2, arr1)];function diff(a, b) {return a.filter(item => b.indexOf(item) === -1);}
}