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