栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

仅合并数组(不删除重复项)

ES5版本使用
Array.concat

var array1 = ["Vijendra", "Singh"];var array2 = ["Singh", "Shakya"];console.log(array1.concat(array2));

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.concat(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;    }});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号