再见 重复的你

    xiaoxiao2025-04-13  10

    在项目中偶尔会用到数组,通过原生js去除数组的重复项。简单的记下几种方法,亲测可用。。

    第一种方法:

    var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9]; function unArray (Arr) { var newArr = []; for (var i = 0; i < Arr.length; i++) { if (newArr.indexOf(Arr[i]) == -1){//检测newArr数组里是否包含Arr数组的内容,==-1检索的字符串没有出现则为-1 newArr.push(Arr[i])//把Arr数组的第i项插入新数组 } }; return newArr; } unArray(Arr); //console.log(unArray(Arr));

    第一种方法是检测新数组newArr里有没有包含Arr里的i项,如果没有则向newArr里添加Aii[i]项,如果有则跳过;不做任何操作。

    第二种方法:

    var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9]; function unArray (Arr) { var newArr = [Arr[0]]; for (var i = 1; i < Arr.length; i++) { if (Arr.indexOf(Arr[i]) == i){//检测Arr数组第一次出现的位置是i newArr.push(Arr[i])//把Arr数组的第i项插入新数组newArr } }; return newArr;//返回新数组newArr } unArray(Arr); //console.log(unArray(Arr));

    第二种方法是在Arr数组里检测,Arr.indexOf(Arr[i])返回某一项在Arr数组里第一次出现的位置,如果第一次出现就push到newArr数组去,如果第二次出现,则什么都不操作。

    第三种方法:

    var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9]; function unArray (Arr) { var newArr = [],hash = {};//hash位hash表 for (var i = 0; i < Arr.length; i++) { if (!hash[Arr[i]]){//如果hash表里没有第i项则 hash[Arr[i]] = true;//把第i项插入到hash表里 newArr.push(Arr[i])//把Arr数组的第i项插入新数组。此方法的时间消耗长,内存消耗大; } }; return newArr; } unArray(Arr);

    //console.log(unArray(Arr)); 第三种是关于hash表的,不太熟悉hash表,所以用到的很少啊。。

    第四种方法

    var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9]; function unArray (Arr) { var newArr = [],firstArr = Arr[0];//创建一个新数组和一个变量firstArr,并赋值为数组Arr的第一个值 for (var i = 0; i < Arr.length; i++) { if (Arr[i] !== firstArr){//如果数组的第i个不等于firstArr; newArr.push(Arr[i]);//把第Arr[i]项插入新数组newArr firstArr = Arr[i];//重新设置变量firstArr为rr[i],也就是刚插入newArr的那一项 } }; return newArr;//返回新数组newArr } unArray(Arr); // console.log(unArray(Arr));

    第五种方法

    使用双层循环的方式,也是我们最容易想到的一种: var arr=[1,22,3,1,4,4,6,3]; function reArr(arr){ var newArr=[]; for(i=0;i<arr.length;i++){ var flag=true; for(j=0;j<i;j++){ if(arr[i]===arr[j]){ flag=false; break; } } if(flag){ newArr.push(arr[i]); } } return newArr; } console.log(reArr(arr));
    转载请注明原文地址: https://ju.6miu.com/read-1298024.html
    最新回复(0)