Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并已排序的数组并删除重复项_Javascript - Fatal编程技术网

Javascript 合并已排序的数组并删除重复项

Javascript 合并已排序的数组并删除重复项,javascript,Javascript,我提出这个是为了合并两个排序的数组并删除重复的数组。我想知道我是否能做得更好 有什么想法吗 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

我提出这个是为了合并两个排序的数组并删除重复的数组。我想知道我是否能做得更好

有什么想法吗

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;
}
var mergeArrays=函数(arr1、arr2){
var mergedArray=新数组();
变量i=0,j=0,k=0;
var prev=-1;
而(arr1.length>i | | arr2.length>j){
if(arr1[i]==arr2[j]){
mergedArray[k]=arr1[i];
i++;
j++;
}else if(arr1[i]prev){
mergedArray[k]=arr2[j];
}
j++;
}
prev=mergedArray[k];
k++;
}
返回Darray;
}

如果你对underline.js开放,而且它很棒,那么你可以尝试类似于u.union的东西

你可以试试这个

var mergeArrays = function(arr1 , arr2){
    var mergedArray = arr1.concat(arr2);

    var uniqueArray = mergedArray.filter(function(elem, pos) {
        return mergedArray.indexOf(elem) == pos;
    });
    return uniqueArray;
} 
我会这样做的

function unique(array) {
    var a = array.concat();
    for(var i=0; i<a.length; ++i) {
        for(var j=i+1; j<a.length; ++j) {
            if(a[i] === a[j])
                a.splice(j--, 1);
        }
    }
    return a;
};
var array1 = ["...",",,,"];
var array2 = ["///", "..."];
var array3 = unique(array1.concat(array2));
函数唯一(数组){
var a=array.concat();
对于(var i=0;iIf这是一个工作代码(它做了您希望它做的事情,没有错误),您可以尝试将其发布在codereview.stackexchange.com上,该站点用于改进您的代码。
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