我想出这个方法是为了合并两个排序的数组并删除重复项。我想知道我是否能做得更好。
有什么想法吗?
var mergeArrays = function(arr1 , arr2){
var mergedArray = new Array();
var i = 0, j=0,k=0;
var prev = -1;
while(arr1.length > i || arr2.length > j){
if(arr1[i] == arr2[j]){
mergedArray[k] = arr1[i];
i++;
j++;
}else if(arr1[i] < arr2[j] || arr2[j] == undefined){
mergedArray[k] = arr1[i];
i++;
}else{
if(arr2[j]>prev) {
mergedArray[k] = arr2[j];
}
j++;
}
prev = mergedArray[k];
k++;
}
return mergedArray;
}
发布于 2015-07-14 18:28:10
你可以试试这个
var mergeArrays = function(arr1 , arr2){
var mergedArray = arr1.concat(arr2);
var uniqueArray = mergedArray.filter(function(elem, pos) {
return mergedArray.indexOf(elem) == pos;
});
return uniqueArray;
}
发布于 2021-03-24 17:33:37
function merge(...args) {
return [...new Set(args.reduce((acc,val) => [...acc, ...val]))].sort();
} //Short and crisp solution to merge arrays, sort them and remove duplicates
发布于 2015-07-14 18:25:00
如果你对underscore.js是开放的,而且它很棒,那么你可以尝试像_.union这样的东西
https://stackoverflow.com/questions/31414347
复制