如何在JavaScript中合并两个数组并删除重复项-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何在JavaScript中合并两个数组并删除重复项

保持可爱mmm 2020-01-08 17:18:48 55

我有两个JavaScript数组:

var array1 = ["Vijendra","Singh"]; var array2 = ["Singh", "Shakya"];

我希望输出为:

var array3 = ["Vijendra","Singh","Shakya"];

输出数组应删除重复的单词。

如何在JavaScript中合并两个数组,以使每个数组中的唯一项按插入原始数组中的相同顺序获得?

JavaScript 前端开发
分享到
取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-01-08 17:19:27

    仅合并数组(不删除重复项) ES5版本使用Array.concat:

    var array1 = ["Vijendra", "Singh"]; var array2 = ["Singh", "Shakya"];

    console.log(array1.concat(array2));

    ES6版本使用解构

    const array1 = ["Vijendra","Singh"]; const array2 = ["Singh", "Shakya"]; const array3 = [...array1, ...array2];

    由于没有“内置”方式来删除重复项(ECMA-262实际上有Array.forEach这样做的好处),因此我们必须手动进行:

    Array.prototype.unique = function() { var a = this.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 = ["Vijendra","Singh"]; var array2 = ["Singh", "Shakya"]; // Merges both arrays and gets unique items var array3 = array1.concat(array2).unique();

    这也将保留数组的顺序(即无需排序)。

    由于许多人都对Array.prototype和for in循环的原型扩展感到烦恼,因此以下是一种使用它的侵入性较小的方法:

    function arrayUnique(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 = ["Vijendra","Singh"]; var array2 = ["Singh", "Shakya"]; // Merges both arrays and gets unique items var array3 = arrayUnique(array1.concat(array2));

    对于那些幸运地使用ES5可用的浏览器的人,可以这样使用Object.defineProperty:

    Object.defineProperty(Array.prototype, 'unique', { enumerable: false, configurable: false, writable: false, value: function() { var a = this.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;
    }
    

    });

    问题来源于stack overflow

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程