數組去重(5種)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>數組去重(5種)</title>
</head>
<body>

</body>
</html>
<script>
    var ary1 = [1, 2, 1, 2, 1, 23, 4, 1, 23, 24, 4, 5, 2, 3, 6, 7];
    var arr=[];
    //第一種方案
    //for循環,includes,push
    for(var i=0;i<ary1.length;i++){
        if(!arr.includes(ary1[i])){
            //也可以使用:arr.indexOf(ary1[i]))==-1來判斷
            //判斷arr中有沒有ary[i],沒有的時候才往裏面放
            arr.push(ary1[i]);
        }
    }
    console.log(arr);

    //第二種
    var ary1 = [1, 2, 1, 2, 1, 23, 4, 1, 23, 24, 4, 5, 2, 3, 6, 7];
    //查看數組的每一項,看他的indexOf和lastIndexOf是否相等,如果不相等說明至少出現兩次,我們刪除第一個....
    for (var i=0;i<ary1.length;i++){
        if(ary1.indexOf(ary1[i])!=ary1.lastIndexOf(ary1[i])){
            //刪除數組的某一項  splice(i,1)
            ary1.splice(i,1);
            //一定要注意,循環遍歷數組的每一項的時候,如果刪除數組的當前項,爲了防止數組塌陷,一定要記住讓i--,
            i--;
        }
    }
    console.log(ary1);

    //第三種:使用filter實現數組去重
    var ary1 = [1, 2, 1, 2, 1, 23, 4, 1, 23, 24, 4, 5, 2, 3, 6, 7];
    var arr=ary1.filter(function (item,index) {
        //每拿到一項,然後去看之前組成的數組中有沒有這一項,如果有不留下,沒有的話留下
        return !(ary1.slice(0,index).includes(item));
    });
    console.log(arr);

    //第四種,對象的特點,屬性名不可以重複,後面會覆蓋前面的
    //實現了去重排序
    var obj={};
    var arr=[];
    for (var  key in ary1){
        obj[ary1[key]]=ary1[key]
    }
    for(var key in obj){
        arr.push(obj[key])
    }
    console.log(arr);

    //第五種 用 Set
    var ary=[1,2,1,2,1,2,true,NaN,true,"1","1"];
    console.log([...new Set(ary)]);


</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章