我有两个JavaScript数组:

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

我希望输出为:

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

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

如何在JavaScript中合并两个数组,以便从每个数组中只获得唯一的项目,其顺序与它们插入原始数组的顺序相同?


当前回答

var a = [1,2,3]
var b = [1,2,4,5]

我喜欢一行。这将把不同的b元素推到

b.forEach(item => a.includes(item) ? null : a.push(item));

另一个版本不会修改

var c = a.slice();
b.forEach(item => c.includes(item) ? null : c.push(item));

其他回答

这是一个使用扩展运算符和数组泛型的ECMAScript 6解决方案。

目前,它只适用于Firefox,也可能适用于Internet Explorer技术预览版。

但如果你使用巴别尔,你现在就可以拥有它。

常量输入=[[1, 2, 3],[101, 2, 1, 10],[2, 1]];常量合并重复数据消除=(arr)=>{return[…new Set([].contat(…arr))];}console.log(“输出”,合并重复数据消除(输入));

合并两个阵列有很多解决方案。它们可以分为两大类(除了使用lodash或underline.js等第三方库)。

a) 组合两个数组并删除重复项。

b) 在组合项目之前过滤掉它们。

合并两个数组并删除重复项

结合

// mutable operation(array1 is the combined array)
array1.push(...array2);
array1.unshift(...array2);

// immutable operation
const combined = array1.concat(array2);
const combined = [...array1, ...array2];    // ES6

统一

统一数组有很多方法,我个人建议使用以下两种方法。

// a little bit tricky
const merged = combined.filter((item, index) => combined.indexOf(item) === index);
const merged = [...new Set(combined)];

在组合项目之前筛选出项目

还有很多方法,但我个人建议使用以下代码,因为它简单。

const merged = array1.concat(array2.filter(secItem => !array1.includes(secItem)));

作为LiraNuna的一部分的单线解决方案:

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

// Merges both arrays
let array3 = array1.concat(array2); 

//REMOVE DUPLICATE
let removeDuplicate = [...new Set(array3)];
console.log(removeDuplicate);

使用array.contat()和array.filter()使用新的Set对象和Spread操作符使用array.contat和新的Set对象

设数组1=[1,2,3,4,5]设数组2=[1,4,6,9]//使用array.contat和array.filter常量array3=array1.concat(array2.filter((项)=>array1.indexOf(项)==-1))console.log('array3:',array3);//使用新的集合和排列运算符const array4=[…新集合([…array1,…array2])];console.log('array4:',array4);//使用array.contat和新集合const array5=[…新集合(array1.concat(array2))];console.log('array5:',array5);

取两个数组a和b

var a = ['a','b','c'];

var b = ['d','e','f'];
var c = a.concat(b); 


//c is now an an array with: ['a','b','c','d','e','f']