Javascript-查找对称差异-For循环出错
下面是我对FreeCodeCamp的“挑战”的解决方案 正确的代码应该返回2、3、4、6、7。为什么我的代码返回2,3,4,6Javascript-查找对称差异-For循环出错,javascript,arrays,for-loop,Javascript,Arrays,For Loop,下面是我对FreeCodeCamp的“挑战”的解决方案 正确的代码应该返回2、3、4、6、7。为什么我的代码返回2,3,4,6 功能符号(args){ args=Array.from(参数); var newArr=[]; 函数removeFirstIndex(){ 对于(变量i=0;i 1){ removeFirstIndex(); } args=args.reduce(函数(a,b){ 返回a.concat(b); }); args=args.filter(函数(元素、位置、自身){ 返回s
功能符号(args){
args=Array.from(参数);
var newArr=[];
函数removeFirstIndex(){
对于(变量i=0;i 1){
removeFirstIndex();
}
args=args.reduce(函数(a,b){
返回a.concat(b);
});
args=args.filter(函数(元素、位置、自身){
返回self.indexOf(elem)==位置和元素!==未定义;
});
返回args.sort();
}
sym([3,3,3,2,5],[2,1,5,7],[3,4,6,6],[1,2,3]);//应该返回2,3,4,6,7
for的内部循环运行i到两个数组之一的长度,但您使用该索引来寻址两个数组中的一个元素。如果它们的长度不相同,您将跳过元素,或者检查超出较短数组长度的值
因此,您需要将该循环拆分为两个单独的循环:
for (var i = 0; i <= args[0].length; i++) {
if (args[1].indexOf(args[0][i]) === -1) {
newArr.push(args[0][i]);
}
}
for (var i = 0; i <= args[1].length; i++) {
if (args[0].indexOf(args[1][i]) === -1) {
newArr.push(args[1][i]);
}
}
在removeFirstIndex中,应该有if和else两个if条件,当first if条件为truePerfect时,两个条件都被执行。谢谢!
for (var i = 0; i <= args[0].length; i++) {
if (args[1].indexOf(args[0][i]) === -1) {
newArr.push(args[0][i]);
}
}
for (var i = 0; i <= args[1].length; i++) {
if (args[0].indexOf(args[1][i]) === -1) {
newArr.push(args[1][i]);
}
}