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

Javascript 为什么我的解决方案不起作用并返回空数组?,javascript,arrays,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);

我试图比较两个数组并返回一个新数组,其中包含仅在两个给定数组中的一个数组中找到的任何项,但不能同时在两个数组中找到。换句话说,返回两个数组的对称差

我的代码:

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]);
函数diffArray(arr1、arr2){
var newArr=[];
var arr=arr1.concat(arr2);
对于(变量i=0;i对于(var j=(arr.length-1);j使用ES6功能的替代、更清洁的解决方案

const diffArray=(arr1,arr2)=>{
常数a=arr1.filter(v=>!arr2.includes(v));
常数b=arr2.filter(v=>!arr1.includes(v));
返回[…a,…b];
}

console.log(diffArray([1,2,3,5,6],[1,2,3,4,5]);
在内部
for(var j=(arr.length-1);首先,你的嵌套for循环中有一个错误。
j=0
。你的方法是错误的。当
arr[j]时,你的代码将把
arr[i]
推到
newArr
是不同的。要找到任意数量数组的唯一元素,您可以创建这样一个好函数。如果您解释当前代码的错误,这将更有助于OP.damn u击败我@ꜱᴜʀᴇꜱʜᴀᴛᴛᴀ 想一想,OP提供的代码可读性不是很好:P