企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# JS实现数组去重方法 ## 方法一 >[info]【**原理**】: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 ~~~ function unique(arr){ var res = []; for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] === arr[j]){ j = ++i; } } res.push(arr[i]); } return res; } var arr1 = [1,2,3,5,4,6,1,2,4,7]; console.log(unique(arr1));//(7) [3, 5, 6, 1, 2, 4, 7] ~~~ ## 方法二 >[info]【**原理**】: 利用splice直接在原数组进行操作 双层循环,外层循环元素,内层循环时比较值 值相同时,则删去这个值 ~~~ function unique2(arr){ for(i = 0; i < arr.length; i++){ for(j = i + 1; j < arr.length; j++){ if(arr[i] == arr[j]){ arr.splice(j,1); j--; } } } return arr; } var arr1 = [1,2,3,5,4,6,1,2,4,7]; console.log(unique2(arr1));//(7) [1, 2, 3, 5, 4, 6, 7] ~~~ ## 方法三 >[info]【**原理**】: 运用递归的思想 先排序,然后从最后开始比较,遇到相同,则删除 ~~~ function unique3(arr){ arr.sort(function(a,b){//对数组进行排序才能方便比较 return a-b; }); function loop(index){ if(index >=1){ if(arr[index] === arr[index-1]){ arr.splice(index,1); } loop(index-1); } } loop(arr.length-1); return arr; } var arr1 = [1,2,3,5,4,6,1,2,4,7]; console.log(unique3(arr1));//(7) [1, 2, 3, 4, 5, 6, 7] ~~~ ## 方法四 >[info]【**原理**】: >利用indexOf以及forEach ~~~ function unique4(arr){ var res = []; arr.forEach(function(v, i ,arr){ var bool = arr.indexOf(v,i+1); if(bool === -1){ res.push(v); } }) return res; } var arr1 = [1,2,3,5,4,6,1,2,4,7]; console.log(unique4(arr1));//(7) [3, 5, 6, 1, 2, 4, 7] ~~~ ## 方法五 >[info]【**原理**】: >利用ES6的set ~~~ function unique5(arr){ return Array.from(new Set(arr)); } var arr1 = [1,2,3,5,4,6,1,2,4,7]; console.log(unique5(arr1));//(7) [1, 2, 3, 5, 4, 6, 7] ~~~