如何在JavaScript中合并两个数组并去重项

54 浏览
0 Comments

如何在JavaScript中合并两个数组并去重项

我有两个JavaScript数组:

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

我想要的输出是:

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

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

我该如何合并两个JavaScript数组,以便只获取每个数组中的唯一项,并且它们的顺序与它们插入原始数组的顺序相同?

admin 更改状态以发布 2023年5月22日
0
0 Comments

使用Underscore.js或Lo-Dash,您可以执行以下操作:

console.log(_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]));


http://underscorejs.org/#union

http://lodash.com/docs#union

0
0 Comments

仅合并数组(不删除重复项)

ES5版本使用Array.concat

var array1 = ["Vijendra", "Singh"];
var array2 = ["Singh", "Shakya"];
array1 = array1.concat(array2);
console.log(array1);

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

然后,使用它:

var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
// Merges both arrays and gets unique items
var array3 = array1.concat(array2).unique(); 

这也会保留数组的顺序(即,不需要排序)。

由于许多人对Array.prototypefor in循环的原型增强感到烦恼,因此这里介绍一种更不具侵入性的使用方法:

function arrayUnique(array) {
    var a = array.concat();
    for(var i=0; i

对于那些有幸在支持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

0