运用对象或则原型链去重

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
  //1.
     function unique(arr){
     	//原理:如有不重复的数组元素,数组元素作为属性名,属性值随便赋一个值
     
     	var obj = {};
     	for(var i = 0 ,result = [];i<arr.length ; i++){
     	   //在obj这个对象中去寻找当前下表为元素的属性名
     		if(!obj[arr[i]]){//如果找不到
     			//将当前数据存入result数组中
     			result.push(arr[i])
     			//并且同事对刚刚存入找不到的那个对象随便赋值
     			obj[arr[i]] = 1

     		}
     	} 
     	return result ;
     }
    var arr = [1,4,8,7,5,1,68,1,6,7];
    console.log(unique(arr))


    //2.利用数组API去重  indexOf 如果找到对应的元素,返回的是下标,否则返回的是-1
    
    function  uni(arr){

           for(var i = 0 ,result = [];i<arr.length ; i++){

            	if(result.indexOf(arr[i]) == -1){
                  result.push(arr[i]);
               
           	    }
           }
           return result;
       }
       var arr1 = [1,4,8,7,5,1,68,1,6,7];
       console.log(uni(arr1));


       //3.利用排序,先排序,在相邻的作比较
      function isASC(arr){
     	arr = arr.sort(function(x,y){
     		return x-y
     	  })
     	   
     	    for(var i = 0 ; i<arr.length-1 ; i++){
     	    	for(var j=1 ;j<arr.length ; j++){
                 if(arr[i] == arr[j]){
                 	arr[j] = arr[j+1];
                 	
                 }
                 if (arr[i] == undefined) {
                 	arr.length--;
                 }
     	    }
     	}
     	arr.length = arr.length-1;
	      return arr;
	}



	console.log(isASC(arr1));


  // 4.在原型链上完成去重
  Array.prototype.Arryno = function(){
      var repeat = arr[0];
        var result = [];
        //i从0开始遍历arr,同时创建空数组resu()没有重复的元素放入这个数组
        for(var i = 0; i<arr.length;i++){
    
        // 遍历resul j从0开始
         for(var j=0;j<result.length;j++)
       { //如果result中的当前元素等于arr中的当前元素
          if (result[j] == arr[i]) {
            break;//退出循环  
             }
       }
           // 如果j等于result的长度
            if (j==result.length) {
                result[result.length] = arr[i];
                                  }
          //江arr中当前元素,最佳到result末尾
       }
             return result;
  }
 

     var arr =[1,2,3,4,5,1,2,3,4,5];
    console.log(  arr.Arryno());
	</script>
   
</head>
<body>
	
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值