• JavaScript数组5种去重方法


    <script>

                                var arr = [1,1,1,2,2,12,12,1,1,"a","a","a","c","c","你","你","我","我"];

                                //第一种,通过双层循环删除后面与其相等的元素,

                                function qucg1(arr){

                                         for(var i=0;i<arr.length-1;i++){  //循环遍历数组

                                                   for(var j=i+1;j<arr.length;j++){//判断i位置后有没有与i位置上相等的数

                                                            if(arr[i]==arr[j]){                        //如果相等,就删除该位置上的数

                                                                     arr.splice(j,1);

                                                                     j--;                                         //删除后,j--使其回到该位置上继续往后查找与i位置上的数,直到没有与i位置上的数相等的,j循环结束,i++

                                                            }

                                                   }

                                         }

                                         console.log(arr);

                                }

                                //第二种,通过关联数组key值唯一性的特性来筛选

                                function qucg2(arr){

                                         for(var i=0,hash=[],b=[];i<arr.length;i++){  //循环遍历数组

                                                   if(hash[arr[i]]==undefined){ //如果hash中下表为arr[i]的值为undefined,

                                                            hash[arr[i]]=0;                                    //并且hash数组中下标为arr[i]的value值为0(0这个值可以是任何值只要不为空)

                                                            b[b.length]=arr[i];                    //那么就把arr[i]添加到数组b中,

                                                   }

                                         }

                                         console.log(b);

                                }

                                //第三种,先排序删除相邻相等的元素

                                function qucg3(){

                                         arr.sort();  //先给数组排序,

                                         for(var i=0;i<arr.length-1;i++){//循环遍历数组

                                                   if(arr[i]==arr[i+1]){           //如果相邻的数与其相等就删除相邻的元素

                                                            arr.splice(i+1,1);               

                                                            i--;                                          //回到原位置继续判断相邻位置的元素是否相等,

                                                   }

                                         }

                                         console.log(arr);

                                }

                                //第四种,通过对象属性值的唯一特性进行筛选,原理和关联数组一样

                                function qucg4(arr){

                                         var rest = [];

                                         var obj = {}

                                         for(var i=0;i<arr.length;i++){

                                                   if(!obj[arr[i]]){

                                                            obj[arr[i]]=1;

                                                            rest.push(arr[i]);

                                                   }

                                         }

                                         console.log(rest);

                                }

                                //第五种,通过indexof()APi查找该元素的位置

                                function qucg5(){  

                                         for(var i=0;i<arr.length;i++){  //循环遍历数组

                                                   var index=arr.indexOf(arr[i],i+1);//定义一个index 用来接收indexOf()找到的元素位置,没找到就返回-1  并且是从i+1位置开始查找的

                                                   if(index!=-1){                                        //如果返回的不是-1就说明有相等的元素                                         

                                                            arr.splice(index,1); //删除该位置上的元素

                                                            i--;

                                                   }

                                         }

                                         console.log(arr);

                                }

                                //第六种,

                                function qucg6(){

                                        

                                }

                                qucg5(arr);

                       </script>

  • 相关阅读:
    C++类内存分布
    职场人理财之指数基金篇
    职场之殇---有些事情千万不能做
    职场人为什么需要理财
    职场发展之跟对老板有多重要
    职场中怎么做好一个演讲
    多线程如何按指定顺序同步执行
    多线程抢票系统浅析
    Spring Boot进阶系列三
    Spring Boot进阶系列二
  • 原文地址:https://www.cnblogs.com/Godfather-twq/p/11360144.html
Copyright © 2020-2023  润新知