我在FreeCodeCamp中学习以下课程来学习Javascript。我处于“两个阵列中的差异”。赋值是对两个数组进行比较,并返回一个新数组,其中只有两个给定数组中的任何一个都可以找到,但两者都不是。有条件的循环不按预期工作
下面是我尝试比较它们的代码,第二部分不适用。我想说明为什么条件循环的第二部分不起作用。
function diffArray(arr1, arr2) {
var filtered = [];
var l = 0;
newArr = Array.prototype.slice.call(arguments);
for (var j=0; j < newArr.length; j++){
for (var k=0; k < newArr[j].length; k++){
//values to check before and next index
l = j + 1;
var m = j-1;
if (l < newArr.length){
if (newArr[l].indexOf(newArr[j][k]) === -1){
filtered.push(newArr[j][k]);
} else if (j == newArr.length - 1){ // this part does not work
console.log(j);
if (newArr[m].indexOf(newArr[j][k]) === -1){
console.log(newArr[j]);
filtered.push(newArr[l][k]);
}
}
}
}
}
// Same, same; but different.
return filtered;
}
diffArray([1, "calf", 3, "piglet"], [1, "calf", 3, 4]);
谢谢。
,因为在你的榜样它永远不会是真的 –
'newArr.length'将2 所以在第一圈'Ĵ== 0'在翻译时达到你的病情 'Ĵ== newArr.length - 1''newArr.length-1 = 1''和'j = 0' '0!== 1' 然后在第二个循环中'j == 1'首先2个循环的'k'第一个条件是真的 –
当'j'为0时,您不通过条件'else if(j == newArr.length - 1)',其中j = 0,newArr.length = 2。当'j'为1时,你没有通过条件'if(l
dinesh