数组去重的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>
 
<!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>

猜你喜欢

转载自blog.csdn.net/MarkJunHao/article/details/81411080