JavaScript去除数组中的重复值

用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能。

Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过程中,就会为其创建一个 prototype 的属性。在未加其他附带条件情况下,所有的 prototype 属性都会自动获取 constractor 属性,constructor 内包含一个指向 prototype 属性所属函数的指针(就是说 constructor 回指构造函数本身)。

举个例子来说,Fruit.prototype.constructor 指向 Fruit。并且可以通过这个构造函数,为其添加更多的属性和方法。

当调用构造函数创建一个新实例后,该实例内部包含一个指针指向构造函数的原型函数。此时我们不用去关心内部的这个指针到底是什么(这个指针还的确有个名字:__proto__ 估计是为了对应 prototype 而起的名字吧 ~\(≧▽≦)/~ ),只需记住它的指向即可(指向构造函数的原型函数)。需要注意的是,这个 __proto__ 只存在于函数实例与构造函数的原型函数之间,而非实例与构造函数之间。

下面是使用 prototype 自定义了3个函数,分别是去掉数组中的重复值,还有求数组中的最大值与最小值。

数组定义为: var arr = [2,1,3,2,1,4,3,4,2,1];

程序代码为:

<script type="text/javascript">
Array.prototype.unique = function(){     
	var a = {};   
  	var len = this.length;   
  	for(var i=0; i < len; 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;     
}  

Array.prototype.max = function(){   //最大值
 	return Math.max.apply({},this) 
}

Array.prototype.min = function(){   //最小值
 	return Math.min.apply({},this) 
}

var arr = [2,1,3,2,1,4,3,4,2,1];

var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
	arr.unique();
	alert(arr.toString());
}

var btn2 = document.getElementById("btn2");
btn2.onclick = function(){
	alert(arr.max());
}

var btn3 = document.getElementById("btn3");
btn3.onclick = function(){
	alert(arr.min());
}
</script>

posted on 2014-11-06 20:07  复活的老羊  阅读(250)  评论(0编辑  收藏  举报

导航