JS数组去重的各种方法

   数组去重方法1:



                * 循环去重 arr.indexOf();
                * 循环时判断新数组中是否存 当前被循环的这个元素,如果不存在就向新数组中添加,存在则什么都不做

            let arr = ['A', 'C', 'A', 'B', 'E', 'C', 'F', 'B', 'D', 'A'];
            let nArr = [];
            for (let i = 0; i < arr.length; i++) {
                if (-1 === nArr.indexOf(arr[i])) {
                    nArr.push(arr[i]);
                };
            };
            console.log(arr);  //['A', 'C', 'A', 'B', 'E', 'C', 'F', 'B', 'D', 'A'];
            console.log(nArr); //["A", "C", "B", "E", "F", "D"];

 

 

数组去重方法2:



                * 数组过滤去重 filter();
                * filter()是数组中自带的方法,
                * filter(callback(item, index, arr){}) 有一个回调函数参数
                * 回调函数中有3个参数:
                    - item 当前项,
                    - index 当前索引值,
                    - arr 数组本身
                * 用于过滤数组中,满足条件的元素,并返回一个新数组,不会修改原来的数组
                * 如果当前元素满足条件true就返回该元素,如不是满足条件false则不返回

             let arr = ['A', 'C', 'A', 'B', 'E', 'C', 'F', 'B', 'D', 'A'];
            let nArr2 = arr.filter((item, index, arr) => {
                return index === arr.indexOf(item);  //indexOf用于从左向右查找数组中指定的元素,如果找到就返回该元素所在的下标,如果找不到则返回-1
            });
            console.log(arr);   //["A", "C", "A", "B", "E", "C", "F", "B", "D", "A"]
            console.log(nArr2); //["A", "C", "B", "E", "F", "D"]

 

 

数组去重方法3:



               * 对象的特性去重;

               * 对象的特性:
                    - 对象中的key是唯一的(因为一个对象的属性名是不能重复的)
                    - 也就是:如果对象中的属性也存在时,又新增加 或 修改这个属性,会把之前已存在的属性覆盖,而不是新增!!

           //对象的特性去重 就是把数组元素当作对象属性名来进行赋值
            let arr = ['A', 'C', 'A', 'B', 'E', 'C', 'F', 'B', 'D', 'A'];


            let Obj = {};
            let nArr = [];
            for (let i = 0; i < arr.length; i++) {
                Obj[arr[i]] = arr[i];
            };
            for (let i in Obj) {
                nArr.push(i);
            }
            console.log(Obj);   //{A: "A", C: "C", B: "B", E: "E", F: "F"}
            console.log(nArr);  //["A", "C", "B", "E", "F", "D"]

            


            //对象的特性去重 -- 简写方法
            Array.prototype.toArrReset = function() {
                let obj = {};
                let arr = [];
                for (let i = 0; i < this.length; i++) {
                    if (!obj[this[i]]) {
                        obj[this[i]] = this[i];
                        arr.push(this[i]);
                    };
                };
                return arr;
            };

            console.log(arr.toArrReset()); //["A", "C", "B", "E", "F", "D"]

 

 

数组去重方法4:


               * Set集合特性去重:
                    - Set()集合: 是ES6中的新增的方法
                    - Set()集合是一种无重复元素的列表,因此new Set(arr)会自动剔除重复元素;
                    - 再通过Array.from(new Set(arr)) 或 [...new Set(arr)],将 Set集合转换为数组。
 

            let arr = ['A', 'C', 'A', 'B', 'E', 'C', 'F', 'B', 'D', 'A'];

            function toArrReset(arr) {
                // return [...new Set(arr)];
                return Array.from(new Set(arr));
            };
            console.log(Arr); //["A", "C", "A", "B", "E", "C", "F", "B", "D", "A"]
            console.log(toArrReset(Arr)); //["A", "C", "B", "E", "F", "D"]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值