下面的代码是为了比较两个数组,然后返回差异,但它似乎只在数组的最后一个值被删除时才有效,有人可以帮忙吗?
当它工作时:
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;
}
}
答案 0 :(得分:0)
通过循环遍历每个数组并检查另一个数据是否存在于另一个数组中,可以实现两个数组之间的区别。如果是,请将其推送到新阵列。
此外,您不需要使用$.each
- 如果您需要支持旧浏览器,只需使用原生Array#forEach
或for
循环。
还有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;
}