數組去重

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>數組去重的4種方法</title>
</head>
<body>
    <script type="text/javascript">

    (function(){
        var arr = [12,234,23,12,124,3,23,12,3];
        var obj = {};
        var newArr = [];

        for(var i = 0; i<arr.length; i++){
            if(obj[arr[i]]){
                obj[arr[i]]+=1; //對象中如果又這個屬性,就加1
            }else{
                obj[arr[i]] = 1;//沒有這個屬性就設置成1
            }
        }

        console.log('第一種方法會改變順序');
        console.log(obj);
        transform(obj);
        //轉換成數組
        function transform(obj){
            var arr = [];
            for(var item in obj){
                arr.push(item);
            }
            console.log(arr);
        }
    })();

    (function(){
        var arr = [12,234,23,12,124,3,23,12,3];
        var newArr = [];
        var obj = {};

        for(var i = 0; i<arr.length; i++){
            if(newArr.indexOf(arr[i]) < 0){
                newArr.push(arr[i]);
                obj[arr[i]] = 1;
            }else{
                obj[arr[i]]++;
            }
        }

        console.log('第二種方法不會改變順序');
        console.log(newArr);
        //存的是每個元素出現的次數
        console.log(obj);

    })();

    (function(){
        var arr = [12,234,23,12,124,3,23,12,3];
        var re = [];

        //先對數組進行排序,不能隨機
        arr.sort(function(a,b){
            return a-b;
        });

        re[0] = arr[0];
        for(var i = 1; i<arr.length; i++){
            if(arr[i] !== re[re.length-1]){
                re.push(arr[i])
            }
        }

        console.log('第三種方法會改變順序');
        console.log(re);

    })();

    (function(){
        var arr = [12,234,23,12,124,3,23,12,3];

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

        function removeArr(index){
            var conts = arr[index];
            index = index + 1;

            while(arr.indexOf(conts,index) >= 0){ //從當前位置向後找
                index = arr.indexOf(conts,index); //找到後保存其位置
                arr.splice(index,1);//刪除這位
            }
        }
        console.log('第四種方法不改變順序');
        console.log(arr);

    })();
    </script>
</body>
</html>
發佈了44 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章