我有两个JavaScript数组:
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
我希望输出为:
var array3 = ["Vijendra","Singh","Shakya"];
输出数组应删除重复的单词。
如何在JavaScript中合并两个数组,以便从每个数组中只获得唯一的项目,其顺序与它们插入原始数组的顺序相同?
我有两个JavaScript数组:
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
我希望输出为:
var array3 = ["Vijendra","Singh","Shakya"];
输出数组应删除重复的单词。
如何在JavaScript中合并两个数组,以便从每个数组中只获得唯一的项目,其顺序与它们插入原始数组的顺序相同?
当前回答
您可以简单地使用ECMAScript 6,
var array1 = ["Vijendra", "Singh"];
var array2 = ["Singh", "Shakya"];
var array3 = [...new Set([...array1 ,...array2])];
console.log(array3); // ["Vijendra", "Singh", "Shakya"];
使用排列运算符串联阵列。使用Set创建一组不同的元素。再次使用排列运算符将集合转换为数组。
其他回答
var array1=[“一”,“二”];var array2=[“two”,“three”];var collectionOfTwoArrays=[…array1,…array2];var uniqueList=array=>[…new Set(array)];console.log('集合:');console.log(collectionOfTwoArrays);console.log('没有重复项的集合:');console.log(uniqueList(collectionOfTwoArrays));
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));
我简化了这个答案的最佳部分,并将其转化为一个很好的函数:
function mergeUnique(arr1, arr2){
return arr1.concat(arr2.filter(function (item) {
return arr1.indexOf(item) === -1;
}));
}
减少他们!!!
这种替代方法不是显式地合并和重复数据消除,而是采用一个数组并用另一个数组减少它,这样第一个数组的每个值都可以在累积行为中迭代和销毁,因为递归性,所以通过利用数组的持久性来忽略已经包含的值。
array2.reduce(reducer, array1.reduce(reducer, []))
测试示例:
var array1=[“Vijendra”,“Singh”,“辛格”];var array2=[“Singh”,“Shakya”,“Shakya”];const reducer=(accumulator,currentValue)=>accumulater.includes(currentValue)?累加器:[…累加器,currentValue];控制台日志(array2.reduce(reducer,array1.reduce,[])));//需要减少第一阵列,以确保减少第二阵列上用作初始值的重复数据消除阵列
结论
在枯燥乏味的时候,每一种方法都需要避免(并不是说它没有用处)。
处理重复数据消除的concat()限制。
不需要Undercore.js、JQuery或Lo Dash等外部库,也不需要创建任何内置函数来实现所需的合并和重复数据消除效果。
哦,嘿!,它可以作为一个内衬完成!!!
由于ES5(ECMAScript 2015)、漂亮的include()和华丽的reduce(),这个答案是可能的。
模块化,通用
这可以通过组成两个基本功能来实现。
const getUniqueMerge = (...arrs) => getUniqueArr(mergeArrs(...arrs))
const getUniqueArr = (array) => Array.from(new Set(array))
const mergeArrs = (...arrs) => [].concat(...arrs)
它可以处理无限的数组或值
console.log(getUniqueMerge(["Vijendra","Singh"],["Singh", "Shakya"])
// ["Vijendra", "Singh", "Shakya"]
console.log(getUniqueMerge(["Sheldon", "Cooper"], ["and", "Cooper", "Amy", "and"], "Farrah", "Amy", "Fowler"))
// ["Sheldon", "Cooper", "and", "Amy", "Farrah", "Fowler"]