我有两个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中合并两个数组,以便从每个数组中只获得唯一的项目,其顺序与它们插入原始数组的顺序相同?
当前回答
Array.prototype.pushUnique = function(values)
{
for (var i=0; i < values.length; i++)
if (this.indexOf(values[i]) == -1)
this.push(values[i]);
};
Try:
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
array1.pushUnique(array2);
alert(array1.toString()); // Output: Vijendra,Singh,Shakya
其他回答
在当今时代,使用现有的图书馆提供更简单、更优雅的内容:
import {pipe, concat, distinct} from 'iter-ops';
// our inputs:
const array1 = ['Vijendra', 'Singh'];
const array2 = ['Singh', 'Shakya'];
const i = pipe(
array1,
concat(array2), // adding array
distinct() // making it unique
);
console.log([...i]); //=> ['Vijendra', 'Singh', 'Shakya']
这两者都是高性能的,因为我们只迭代一次,而且代码非常容易阅读。
注:我是iter ops的作者。
var arr1 = [1, 3, 5, 6];
var arr2 = [3, 6, 10, 11, 12];
arr1.concat(arr2.filter(ele => !arr1.includes(ele)));
console.log(arr1);
output :- [1, 3, 5, 6, 10, 11, 12]
我学会了一种用扩展运算符连接两个数组的小方法:
var array1 = ['tom', 'dick', 'harry'];
var array2 = ['martin', 'ricky'];
array1.push(...array2);
“…”扩展运算符将以下数组拆分为单个项,然后push可以将它们作为单独的参数处理。
给定两个没有重复的简单类型的排序数组,这将在O(n)时间内合并它们,并且输出也将被排序。
function merge(a, b) {
let i=0;
let j=0;
let c = [];
for (;;) {
if (i == a.length) {
if (j == b.length) return c;
c.push(b[j++]);
} else if (j == b.length || a[i] < b[j]) {
c.push(a[i++]);
} else {
if (a[i] == b[j]) ++i; // skip duplicates
c.push(b[j++]);
}
}
}
您可以使用loadash unionWith-_.unionWith(〔arrays〕,〔comparator〕)
此方法类似于_.union,只是它接受被调用来比较数组元素的比较器。结果值从出现该值的第一个数组中选择。比较器由两个参数调用:(arrVal,othVal)。
var array1=[“Vijendra”,“Singh”];var array2=[“Singh”,“Shakya”];var array3=_.unionWith(array1,array2,_.isEqual);console.log(array3);<script src=“https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js“></script>