数组去重的多种方法实现

<script>

    //第一种方式
    var arr=[23,1,34,7,1,3,5,2,3]; //定义一个数组
    var newArr = [];   //定义一个新的临时数组
    var result = {};   //hash表
    for(var i=0;i<arr.length;i++){    //循环遍历数组
        if(!result[arr[i]]){  //如果遍历到的数组不在hash表中
            result[arr[i]] = true;  //将当前遍历到的数组元素存入到hash表中
            newArr.push(arr[i]);  //将当前元素push到新数组
        }
    }
    console.log(newArr);

    //第二种方法
    var arr=[23,1,34,7,1,3,5,2,3]; //定义一个数组
    var newArr = [];   //定义一个新的临时数组
    for(var i=0;i<arr.length;i++){   //遍历数组
        if(newArr.indexOf(arr[i])==-1) newArr.push(arr[i]);
        //判断当前元素是否能在临时数组中找到,如果没找到就将其追加到临时数组中,再对当前元素后面的元素继续查找以及比较
    }

    console.log(newArr);

    //第三种方式
    var arr=[23,1,34,7,1,3,5,2,3]; //定义一个数组
    arr.sort();   //先将数组排序
    var newArr=[arr[0]];   //定义一个新数组,并将数组第一个元素放到新数组中
    for(var i=0;i<arr.length;i++){
        if(arr[i] !==newArr[newArr.length-1]){ //通过判断相邻两项是否相等,然后项新数组中追加元素,返回新数组
            newArr.push(arr[i]);
        }
    }
    console.log(newArr);

</script>

posted @ 2016-11-07 22:59  amaya.梅  阅读(463)  评论(0编辑  收藏  举报