如何在JavaScript中合并两个数组并重复删除项目

如何在JavaScript中合并两个数组并重复删除项目

我有两个JavaScript数组:

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

我希望输出为:

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

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

如何在JavaScript中合并两个数组,以便我只按照它们插入原始数组的顺序从每个数组中获取唯一项?


拉丁的传说
浏览 1758回答 4
4回答

婷婷同学_

仅合并数组(不删除重复项)ES5版本使用Array.concat:var&nbsp;array1&nbsp;=&nbsp;["Vijendra","Singh"];var&nbsp;array2&nbsp;=&nbsp;["Singh",&nbsp;"Shakya"];var&nbsp;array3&nbsp;=&nbsp;array1.concat(array2);&nbsp;//&nbsp;Merges&nbsp;both&nbsp;arrays //&nbsp;[&nbsp;'Vijendra',&nbsp;'Singh',&nbsp;'Singh',&nbsp;'Shakya'&nbsp;]ES6版本使用解构const&nbsp;array1&nbsp;=&nbsp;["Vijendra","Singh"];const&nbsp;array2&nbsp;=&nbsp;["Singh",&nbsp;"Shakya"];const&nbsp;array3&nbsp;=&nbsp;[...array1,&nbsp;...array2];由于没有“内置”方法来删除重复项(ECMA-262实际上对此有用Array.forEach),我们必须手动完成:Array.prototype.unique&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;this.concat(); &nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;i=0;&nbsp;i<a.length;&nbsp;++i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;j=i+1;&nbsp;j<a.length;&nbsp;++j)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a[i]&nbsp;===&nbsp;a[j]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.splice(j--,&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;a;};然后,使用它:var&nbsp;array1&nbsp;=&nbsp;["Vijendra","Singh"];var&nbsp;array2&nbsp;=&nbsp;["Singh",&nbsp;"Shakya"];//&nbsp;Merges&nbsp;both&nbsp;arrays&nbsp;and&nbsp;gets&nbsp;unique&nbsp;itemsvar&nbsp;array3&nbsp;=&nbsp;array1.c oncat(array2).unique();这也将保留数组的顺序(即,不需要排序)。由于许多人对环形Array.prototype和for in循环的原型扩充感到恼火,因此这是一种使用它的侵入性较小的方法:function&nbsp;arrayUnique(array)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;array.concat(); &nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;i=0;&nbsp;i<a.length;&nbsp;++i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;j=i+1;&nbsp;j<a.length;&nbsp;++j)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a[i]&nbsp;===&nbsp;a[j]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.splice(j--,&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;a;}var&nbsp;array1&nbsp;=&nbsp;["Vijendra","Singh"];var&nbsp;array2&nbsp;=&nbsp;["Singh",&nbsp;"Shakya"]; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Merges&nbsp;both&nbsp;arrays&nbsp;and&nbsp;gets&nbsp;unique&nbsp;itemsvar&nbsp;array3&nbsp;=&nbsp;arrayUnique(array1.concat(array2));对于那些有幸使用ES5可用的浏览器的人,你可以Object.defineProperty像这样使用:Object.defineProperty(Array.prototype,&nbsp;'unique',&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;enumerable:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;configurable:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;writable:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;this.concat(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;i=0;&nbsp;i<a.length;&nbsp;++i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;j=i+1;&nbsp;j<a.length;&nbsp;++j)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a[i]&nbsp;===&nbsp;a[j]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.splice(j--,&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;a; &nbsp;&nbsp;&nbsp;&nbsp;}});

蛊毒传说

这是使用扩展运算符和数组泛型的ECMAScript 6解决方案。目前它只适用于Firefox,可能还适用于Internet Explorer Technical Preview。但是如果你使用Babel,你现在可以拥有它。//&nbsp;Input:&nbsp;[&nbsp;[1,&nbsp;2,&nbsp;3],&nbsp;[101,&nbsp;2,&nbsp;1,&nbsp;10],&nbsp;[2,&nbsp;1]&nbsp;]//&nbsp;Output:&nbsp;[1,&nbsp;2,&nbsp;3,&nbsp;101,&nbsp;10]function&nbsp;mergeDedupe(arr){ &nbsp;&nbsp;return&nbsp;[...new&nbsp;Set([].concat(...arr))];}
打开App,查看更多内容
随时随地看视频慕课网APP