码迷,mamicode.com
首页 > 编程语言 > 详细

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

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

标签: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实现一个数组合并的方法(要求去重)

标签:js数组合并去重

原文地址:http://lam01141127.blog.51cto.com/4074143/1633873

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!