数组去重的几种方法

1.通过循环遍历数组,根据判断flag的值来确定是否将值放入到数组中

 1 //数组去重:
 2     var arr = [5,1,2,1,2,2,1,2,1,2,3,4,3,4,5,3,4,5,4,3,2,1];
 3     //希望得到的结果为[1,2,3,4,5]
 4     //1 创建一个结果数组
 5     var resultArr = [arr[0]];
 6     var flag;
 7     //2 遍历数组
 8     for(var i = 1; i < arr.length; i++){
 9       // 正确的实现方式
10       flag = true;//假设当前arr[i]可以放入到resultArr中
11       for(j = 0; j < resultArr.length; j++){
12         //设置可以让假设失败的条件:如果偶遇任何一个元素相等,即说明不能放入
13         if(arr[i] === resultArr[j]){
14           flag = false;
15        }
16       }
17       //根据flag的值设置最终操作
18       if(flag){
19         resultArr.push(arr[i]);
20       }
21     }
22     console.log(resultArr);

2.通过Es6语法进行数组去重

1 //先定义一个重复的数组
2 var arr = [1,1,2,2,2,3,3,4,4] 
3 
4 var set = new Set(arr) // {1,2,3,4}
5 var newArr = Array.from(set) // 再将set转变成array
6 console.log(newArr) // [1,2,3,4]

实现的原理:SetArray的区别在于:Array中允许出现重复的元素,例如[1,2,2,3];而Set中的所有元素都是唯一的,只能是{1,2,3}。利用这一特性,我们就可以迅速地去掉数组中重复的元素。

3.通过创建空对象,对象里面的属性名是数组的每个值,可以计算每个值重复的个数

 1 //使用数据存储功能完成数组去重并计数的案例
 2         var arr = [5,1,2,1,1,2,3,2,2,1,2,1,2,3,4,3,4,5,3,4,5,4,3,2,1];//货车
 3         //创建一个货物单
 4         var obj = {};
 5         var item
 6         //将货车中的货物一个个的拿过来看
 7         for(var i = 0;i<arr.length;i++){
 8             //看一看arr[i]这个货物有没有(检测obj中是否含有arr[i]这个属性)
 9             item = arr[i];
10             //如果有值,这个值一定大于等于1
11             //如果没有,默认为undefined
12             if(obj[item]){
13                 //说明有值,让值++
14                 obj[item]++;
15             }else{
16                 //说明没有值,设置值为1
17                 obj[item] = 1;
18             }
19 
20         }
21         console.log(obj);
原文地址:https://www.cnblogs.com/md-lw/p/8744869.html