如何在JavaScript中合并两个数组并重复删除项目我有两个JavaScript数组:var array1 = ["Vijendra","Singh"];var array2 = ["Singh", "Shakya"];我希望输出为:var array3 = ["Vijendra","Singh","Shakya"];输出数组应该删除重复的单词。如何在JavaScript中合并两个数组,以便我只按照它们插入原始数组的顺序从每个数组中获取唯一项?
4 回答
婷婷同学_
ES5版本使用
TA贡献1844条经验 获得超8个赞
仅合并数组(不删除重复项)
ES5版本使用Array.concat:
var array1 = ["Vijendra","Singh"];var array2 = ["Singh", "Shakya"];var array3 = array1.concat(array2); // Merges both arrays // [ 'Vijendra', 'Singh', 'Singh', 'Shakya' ]
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 itemsvar array3 = array1.c oncat(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 itemsvar 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;
}});添加回答
举报
0/150
提交
取消
