Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-查找对称差异-For循环出错_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript-查找对称差异-For循环出错

Javascript-查找对称差异-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

下面是我对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(函数(元素、位置、自身){
返回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]);
        }
    }