js(javascript)数组去重

数组去重

说到数组去重小编准备了两种方案

1.第一种splice(删除项下标,删除几个)

现有数组

var arr = [1,2,3,3,6,2,6,1,4]

我们要去掉数组中重复项 那我们肯定要做对比所以 循环遍历是不可少的

var arr = [1,2,3,3,6,2,6,1,4]
for (var i = 0; i < arr.length; i++){ //
            
        }

我们用数组长短 来控制它循环多少次
接下来 我们需要做的是 拿数组里面的数 跟每一项做一个对比
如果是重复的就去除
那么我们还需要一个循环来遍历数组 所以我们在循环里面再套一个循环
道理懂了 那么我们能跟数组的自己比吗?
肯定不行 那么第二层的循环要从第一层开始数的 下一个开始 所以就是i+1

var arr = [1,2,3,3,6,2,6,1,4]
for (var i = 0; i < arr.length; i++) { //
            for (var j = i + 1; j < arr.length; j++){
                if (arr[i] == arr[j]) {
                    arr.splice(j, 1)
                    j--
                }
            }
        }

所以我们用数组api **splice(删除项下标,删除几个)**来删掉 然后
因为数组长度发生改变所以我们还要j–来把数组全都走完这样我们就去重了

2.第二种利用对象去重

首先定义一个对象
循环肯定不能少

var arr = [1,2,3,3,6,2,6,1,4]
var obj = {}
  for (var i = 0; i < arr.length; i++) {
  }

原理:对象的属性名不会重复 所以我们用这个特点把数组中的值变成对象的属性
那么我们来判断对象里面是否有这个属性

var arr = [1, 2, 3, 3, 6, 2, 6, 1, 4]
        var obj = {}
        for (var i = 0; i < arr.length; i++) {
            if (obj[arr[i]]) {
                obj[arr[i]]++
            } else {
                obj[arr[i]] = 1;
            }
        }

当有这个属性就加一 没有就给它赋值为1 让它存在
接下来我们再遍历对象获取它的属性名 添加到数组

	var arr = [1, 2, 3, 3, 6, 2, 6, 1, 4]
        var obj = {}
        for (var i = 0; i < arr.length; i++) {
            if (obj[arr[i]]) {
                obj[arr[i]]++
            } else {
                obj[arr[i]] = 1;
            }
        }
        arr = []
        for (var j in obj) {
            arr.push(j)
        }

这样就得到了去重后的数组 这两种方法都是改变了原数组 所以不建议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值