数组去重的几种方法

var arr = [11, 22, 11, 66, 54, 54, 12, 98, 65, 22, 66, 98, 41, 52, 62, 36];

1.es6 Set方法

        var setarr = [...new Set(arr)]
        console.log(setarr);

2.对象法

核心原理 : 对象的属性名不能重复
取值 :
a.属性名存在,则取属性值
b.属性名不存在,则取undefined
赋值:
a.属性名存在,修改属性值
b.属性名不存在,动态添加属性名

        var obj = {};//检测数组元素是否重复
        var objarr = [];
        for (var i = 0; i < arr.length; i++) {
            if (obj[arr[i]] == undefined) {//元素没有重复
                objarr.push(arr[i]);
                obj[arr[i]] = 1;//标记已经出现,下次取值不会是undeinfed
            }
        }
        console.log(objarr);

3.开关思想法

      var flagarr = [arr[0]]
       // 因为新数组是空的,所以第一个值一定可以存到新数组中
        for (var i = 0; i < arr.length; i++) {// 为什么从下标1开始,因为第0位一定可以存到新数组中,所以可以节省一次循环
           // 3. 将老数组的值与新数组的每一个值做对比---遍历新数组
            for (var j = 0; j < flagarr.length; j++) {
                var flag = false
                // 假设老数组的值与新数组中的值相等
                if (arr[i] == flagarr[j]) {
                    break
                } else {
                    flag = true;
                }
            }
            if (flag) {
                flagarr.push(arr[i])
            }
        }
        console.log(flagarr);

4.indexof()方法;

//indexof()方法:
		// let str = 'orange';
        // str.indexOf('o'); //0
        // str.indexOf('n'); //3
        // str.indexOf('c'); //-1 找不到是打印-1
        
       var temp = []; //用于放去重后的数组
        for (var i = 0; i < arr.length; i++) {
            if (temp.indexOf(arr[i]) == -1) {
                temp.push(arr[i])
            }
        }
        console.log(temp)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值