不规则数组去重

本文介绍了如何在JavaScript中处理不规则数组的去重问题,包括对对象和数组进行递归处理,以及使用sort()和some()方法确保去重后的数组整洁。
摘要由CSDN通过智能技术生成

不规则的数组去重在平时比较常见,它不同于纯数组去重那么方便,就需要自己写方法解决

let arr = [1, 2, 5, 3, 8, 6, 9, 4, 6, 7, 2, 9,

  {

    id: 2, name: '张三', sex: '男'

  }, {

    id: 2, name: '张三', sex: '男'

  }, [2, 5, 4, 5],

  [{

    id: 3, name: '李四', sex: '女'

  }, {

    id: 3, name: '李四', sex: '女'

  }]

]

方法如下:

let arr2 = []

const deduplicationArr = (arr) => {

  let arr3 = []

  let arr4 = []

  for (let i = 0; i < arr.length; i++) {

    if (typeof arr[i] != 'number') {  //先判断是否是Object类型

      if (arr[i] instanceof Array) {  //判断是否是数组类型

        deduplicationArr(arr[i])

      } else {                        //对象

        arr3.push(arr[i])

      }

    } else {                   //数组类型

      arr2.push(arr[i])

    }

  }

  //arr2排序去重

  if (arr2.length > 0) {

    arr2.sort()

    for (let i = 0; i < arr2.length; i++) {

      if (arr2[i] == arr2[i + 1]) {

        arr2.splice(i, 1)

        i--

      }

    }

  }

  if (arr3.length > 0) {

    for (let j = 0; j < arr3.length; j++) {

      if (!arr4.some(e => e.id == arr3[j].id)) {   //find方法一样

        arr4.push(arr3[j])

      }

    }

    arr2.push(...arr4)

  }

  return arr2

}

结果:

欢迎补充,一起进步。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值