首页 > 编程语言 > 详细

用JS实现一个数组合并的方法(要求去重)

时间:2015-04-17 18:37:19      阅读:329      评论:0      收藏:0      [点我收藏+]


    最近发现一道面试题,用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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!