标签:js数组合并去重
最近发现一道面试题,用JS实现一个数组合并的方法(要求去重)。我们知道,concat方法会合并两个数组并返回一个新的数组,新的数组会包含旧数组中的每一个元素,即[1,2,3]与[2,3,4]合并后的结果为[1,2,3,2,3,4]。那么该如何实现,既能合并又能去重?
思路就是,将目标数组的值作为key放进一个对象中,在这个过程中,重复的值就被过滤掉了,这样就排除了重复的值。
两个数组,a = [1,2,3], b = [2,3,4],要求合并后的数组为[1,2,3,4]
Array.prototype.unique = function(){
var a = {};
for(var i = 0; i < this.length; i++){
if(typeof a[this[i]] == "undefined")
a[this[i]] = 1;
}
this.length = 0;
for(var i in a)
this[this.length] = i;
return this;
}
var a = [1,2,3];
var b = [2,3,4];
var c = a.concat(b).unique();两个数组,a = [1,2,3], b = [2,3,4],要求合并后的数组为[1,4]
Array.prototype.unique2 = function(){
var a = {},
b = {},
n = this.length;
for(var i = 0; i < n; i++){
if(typeof(b[this[i]]) != "undefined")
continue;
if(typeof(a[this[i]]) == "undefined"){
a[this[i]] = 1;
}else{
b[this[i]] = 1;
delete a[this[i]];
}
}
this.length = 0;
for(var i in a)
this[this.length] = i;
return this;
}
var a = [1,2,3,4];
var b = [2,3,5,7];
var d = a.concat(b).unique2();参考链接: http://www.jb51.net/article/21916.htm
http://bbs.csdn.net/topics/190040118
本文出自 “雨天飞” 博客,请务必保留此出处http://lam01141127.blog.51cto.com/4074143/1633873
标签:js数组合并去重
原文地址:http://lam01141127.blog.51cto.com/4074143/1633873