use*_*226 5 javascript node.js underscore.js
我有两个用户ID的数组,我想检查其中的不同项目.
arr1 = [123, 456, 789];
arr2 = [123, 456, 789, 098];
Run Code Online (Sandbox Code Playgroud)
问题是:这些阵列可能有10或2千万个项目.
我正在尝试,underscore.difference()但需要10分钟才能完成.
有没有更快的方法来做到这一点?
这认为数组中没有数字 0 或 1:
var arr1 = [123, 456, 789,3],
arr2 = [123, 456, 789, 098],
has = {},
different=[],
length1=arr1.length,
length2=arr2.length;
for(var i=0;i<length1;i++){
has[arr1[i]]=true;
}
for(var i=0;i<length2;i++){
var val=arr2[i];
if(has[val] === undefined){
has[val]=val;
}
else{
if(has[val]!=val){
has[val]=false;
}
}
}
for(var i in has){
if (has[i]) different.push(i);
}
Run Code Online (Sandbox Code Playgroud)
如果您还想检查 0 和 1:
for(var i=0;i<length1;i++){
has[arr1[i]]=NaN;
}
for(var i=0;i<length2;i++){
var val=arr2[i];
if(has[val] === undefined){
has[val]=null;
}
else{
if(has[val]!=null){
has[val]=true;
}
}
}
for(var i in has){
if (!has[i]) different.push(i);
}
Run Code Online (Sandbox Code Playgroud)