zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Codeforces Round #622 (Div. 2)
    Knapsack Cryptosystem 牛客团队赛
    HDU 2586(LCA欧拉序和st表)
    P3865 【模板】ST表
    P2023 [AHOI2009]维护序列 区间加乘模板
    P1558 色板游戏 线段树(区间修改,区间查询)
    Codeforces Round #621 (Div. 1 + Div. 2) D
    Codeforces Round #620 (Div. 2) E
    Educational Codeforces Round 82 (Rated for Div. 2)
    洛谷P1638 逛画展
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4079786.html
Copyright © 2011-2022 走看看