为什么我的解决方案不起作用并返回空数组?

时间:2017-08-09 08:23:52

标签: javascript arrays

我正在尝试比较两个数组并返回一个新数组,其中只有在两个给定数组中的一个中找到的任何项,但不是两者。换句话说,返回两个数组的对称差异。

我的代码:

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]);

我的解决方案出了什么问题?

1 个答案:

答案 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]));