Javascript 如何分别查找从数组中添加和删除的项
我有两个字符串数组(总是包含字符串值) 我需要两个函数:一个查找已添加的(d,e)和一个查找已删除的(b)。我有一个函数可以找到所有的差异,但我不知道如何做到这一点。此外,效率也很重要,这些数组可能包含1000多个值,并且没有进行排序。最后,如果一个或两个数组都是空的,它不应该失败Javascript 如何分别查找从数组中添加和删除的项,javascript,arrays,Javascript,Arrays,我有两个字符串数组(总是包含字符串值) 我需要两个函数:一个查找已添加的(d,e)和一个查找已删除的(b)。我有一个函数可以找到所有的差异,但我不知道如何做到这一点。此外,效率也很重要,这些数组可能包含1000多个值,并且没有进行排序。最后,如果一个或两个数组都是空的,它不应该失败 function getArrayDifference(a1, a2) { var tempArr = [], diffArr = []; for (var i = 0; i <
function getArrayDifference(a1, a2) {
var tempArr = [],
diffArr = [];
for (var i = 0; i < a1.length; i++) {
tempArr[a1[i]] = true;
}
for (var j = 0; j < a2.length; j++) {
if (tempArr[a2[j]]) delete tempArr[a2[j]];
else tempArr[a2[j]] = true;
}
for (var k in tempArr) {
diffArr.push(k);
return diffArr;
}
}
函数getArrayDifference(a1,a2){
var tempArr=[],
diffArr=[];
对于(变量i=0;ifunction arrayDiffAdded(arr1, arr2) {
var ret = [];
for(var i=0, l=arr2.length; i<l; ++i)
if(!~arr1.indexOf(arr2[i]))
ret.push(arr2[i]);
return ret;
}
function arrayDiffRemoved(arr1, arr2) {
return arrayDiffAdded(arr2, arr1);
}
函数arrayDiffAdded(arr1、arr2){
var-ret=[];
对于(var i=0,l=arr2.length;i)您的问题并没有明确说明您遇到了什么问题。如果您只是想找人为您编写代码,我建议您去找一位开发人员……我不知道怎么做……如果您想编写伪代码,我将对其进行编码……@trueimage~
是最合适的。~arr.indexOf(foo)
是一种技巧,如果arr
包含foo
,或者falsy0
则给出一个真正的数字。
function arrayDiffAdded(arr1, arr2) {
var ret = [];
for(var i=0, l=arr2.length; i<l; ++i)
if(!~arr1.indexOf(arr2[i]))
ret.push(arr2[i]);
return ret;
}
function arrayDiffRemoved(arr1, arr2) {
return arrayDiffAdded(arr2, arr1);
}