数组去重复

// 数组去重复
var arr = [1,1,2,3,2,2,3,4,4,5]
//1.将重复的删掉
//遍历所有的元素,准备跟他后面的所有元素做比较
for(var i=0;i<arr.length;i++){
    // arr[i] // 所有元素
    // 让他跟他后面的所有元素比较
    // 遍历他后面所有的元素
    for(var j=i+1;j<arr.length;j++){
        // 将arr[i]跟他后面的所有元素比较
        if(arr[i] === arr[j]){
            // 将后面的这个相同元素删除
            arr.splice(j, 1)
            // 数组删除掉一个元素以后,后面所有元素下标整体向前移动一位,
        当下次循环j++以后,就跳过了一个元素 - 所以需要j--
            j--
        }
    }
}
console.log(arr);
// 2.借助一个空数组,将所有不重复的元素放在空数组中
var arr = [1,1,2,3,2,2,3,4,4,5]
var brr = [1,2,3]
var brr = [ arr[0] ]
// 先定义一个空数组,将第一个元素放到这个数组中,遍历从第二个开始的元素,判断是否在brr中,
如果在,下一个,如果不在,就将这个元素放在brr中
for(var i=1;i<arr.length;i++){
    var flag = 1 // 定义变量,初始值是1
    // arr[i] // arr中从第二个开始的所有元素
    // 判断他在不在brr中
    // 遍历brr,判断其中的每个元素是否跟arr[i]是相等的
    for(var j=0;j<brr.length;j++){
        // brr[j] // brr[j]是brr中的每个元素
        // 比较
        // if(arr[i] != brr[j]){
        //     // 此时才是brr中第一个元素在比较,不相等,应该看他后面的元素是否相等
        // }
        // 需要找到,什么时候就该给brr中放元素了 - 时机
        // 时机: 在brr所有元素都遍历完了,也没有一个相等 - 才放进去
        if(arr[i] === brr[j]){
            flag = 2 // 如果在brr的遍历中,有相等过的元素 - 就将flag改成2
            break;
        }
    }
    // 当里面小循环执行结束了,才是brr遍历完了
    // 但是循环结束后没有判断条件了 - 创造条件
    // 判断flag是1还是2就能知道遍历过程中是否相等过了
    if(flag === 1){
        // 将arr[i]放到brr中
        brr.push(arr[i])
    }
}
console.log(brr);
// 3.利用对象的键是唯一的,将数组中每个元素都作为对象的键
var arr = [1,1,2,3,2,2,3,4,4,5]

// var obj = {
//     1: '哈哈',
//     2: '呵呵'
// }
// console.log(obj);

// 定义一个空对象
var obj = {}
// 遍历数组,将数组中的每个元素都作为对象的键 - 给对象设置键值对
for(var i=0;i<arr.length;i++){
    // arr[i] 数组中每个元素
    // 将他写在obj中,作为键
    obj[ arr[i] ] = 0
}
console.log(obj);

// 遍历对象,将所有的键,放在一个数组中
var brr = []
for(var key in obj){
    brr.push(+key) // 字符串前面放+默认能转成数字
}
console.log(brr);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值