用js实现数组去除重复的元素方法

方法1:

两层for循环,判断第一层和第二层的元素是否相同,相同就删除元素splice(开始位置,1),0代表添加

let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
      //两层for循环,判断第一层和第二层的元素是否相同,相同就删除元素splice(开始位置,1),0代表添加
        function norepeat(arr) {
            for (let i = 0; i < arr.length; i++) {
                for (let j = i + 1; j < arr.length; j++) {
                    if (arr[i] == arr[j]) {//下标相同则删除该值
                        arr.splice(j, 1);//后面的元素会自动补位,需要比较一次j所在位置的元素,所以需要使j自减
                        j--;
                    }
                }
            }
       return arr;
     }
console.log(norepeat(arr));

显示结果:

方法2:

es6中的set()方法

es6中的set主要是作用是一是对数组去重, set()将数组去重实例化,二是对数组交集合并、差集

Array.from()方法可以将 Set 结构转为数组,去除数组重复成员的另一种方法

let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
let newarr1 = new Set(arr);
console.log(newarr1);
//Array.from()方法可以将 Set 结构转为数组,去除数组重复成员的另一种方法
let newarr2 = Array.from(new Set(arr));
console.log(newarr2);

显示结果:

 方法3:

indexof()查找字符串:

将需要去重的数组进行遍历,判断新数组中是否有当前元素,没有就将值添加(push)进新数组中

indexOf()大小写敏感返回值:-1 代表没有找到匹配子串

let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
function newArr(arr) {
            let newarr4 = [];    //新数组
            for (let i = 0; i < arr.length; i++) {
                if (newarr4.indexOf(arr[i]) == -1) {    //判断新数组中是否有当前元素,为-1就是没有该值,最后将值添加(push)进新数组中
                    newarr4.push(arr[i]);
                }

            }
            return newarr4;
        }
console.log(newArr(arr));

显示结果:

 方法4:

filter()方法去除重复元素,indexof()查找字符串

filter()方法会创建一个新数组,原数组的每个元素传入回调函数中,回调函数中有return返回值,若返回值为true,这个元素保存到新数组中;若返回值为false,则该元素不保存到新数组中;原数组不发生改变。

let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
let newarr3 = arr.filter(function (ele, index) {
            return arr.indexOf(ele) == index;
        });
console.log(newarr3);

结果显示:

filter()解析:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸落…

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值