jQuery $ .each()bug

时间:2015-05-01 19:08:47

标签: javascript jquery

下面的代码是为了比较两个数组,然后返回差异,但它似乎只在数组的最后一个值被删除时才有效,有人可以帮忙吗?
当它工作时:
array1:[lol,lol2]
array2:[lol,lol2,lol3]
它将返回lol3
当它不起作用时:
array1:[lol,lol3]
array2:[lol,lol2,lol3]
它返回undefined

function getChange(array1,array2){
            $.each( array2,function(key,value){
                if(($.inArray(value,array1))!==-1){
                    found="notfound";
                }
                else
                {
                    no=false;
                    newVAL = value;
                    array1 = array2;
                    return false;
                }
            });
            if(no==false)
            {
                return newVAL;
            }
        }

1 个答案:

答案 0 :(得分:0)

通过循环遍历每个数组并检查另一个数据是否存在于另一个数组中,可以实现两个数组之间的区别。如果是,请将其推送到新阵列。

此外,您不需要使用$.each - 如果您需要支持旧浏览器,只需使用原生Array#forEachfor循环。

还有libraries会为你做这件事。

var fruits = ['apple', 'blueberry', 'orange'];
var fruits2 = ['apple', 'orange', 'banana', 'kiwi'];

console.log(getArrayDifference(fruits, fruits2));
// ['blueberry', 'banana', 'kiwi']

function getArrayDifference(arr1, arr2)
{   
    var difference = [];

    arr1.forEach(function(item) {
        if (!~arr2.indexOf(item)) {
            difference.push(item);
        }
    });

    arr2.forEach(function(item) {
        if (!~arr1.indexOf(item)) {
            difference.push(item);
        }
    });

    return difference;
}

Fiddle

相关问题