数组去重

  //第一种
      // 无需思考,我们可以得到 O(n^2) 复杂度的解法。
      // 定义一个变量数组 res 保存结果,遍历需要去重的数组,
      // 如果该元素已经存在在 res 中了,则说明是重复的元素,如果没有,则放入 res 中。
      // function fun(params) {
      //   let res = []
      //   for (let index = 0; index < params.length; index++) {
      //     for (var j = 0; j < res.length; j++) {
      //       if (res[j] === params[index]) {
      //         break
      //       }
      //     }
      //     if (j === res.length) {
      //       res.push(params[j])
      //     }
      //   }
      //   console.log(res)
      // }
      // 加indexOf
      // function fun(params) {
      //   let res = []
      //   for (let index = 0; index < params.length; index++) {
      //     res.indexOf(params[index]) == -1 && res.push(params[index])
      //   }
      //   console.log(res)
      // }
      //加filter
      // function fun(params) {
      //   let res = []
      //   params.filter((item) => {
      //     res.indexOf(item) == -1 && res.push(item)
      //   })
      //   console.log(res)
      // }
      // function fun(params) {
      //   let res = params.filter((item, index, arr) => {
      //     return params.indexOf(item) === index
      //   })
      //   console.log(res)
      // }
      //第二种
      // 法一是将原数组中的元素和结果数组中的元素一一比较,
      // 我们可以换个思路,将原数组中重复元素的最后一个元素放入结果数组中。
      // function fun(params) {
      //   let res = []
      //   for (var index = 0; index < params.length; index++) {
      //     for (var j = index + 1; j < params.length; j++) {
      //       if (params[index] === params[j]) {
      //         j = ++index
      //       }
      //     }
      //     res.push(params[index])
      //   }
      //   console.log(res)
      // }
      //第三种es6
      // function fun(params) {
      //   return Array.from(new Set(params))
      // }
      //第四种sort
      // 将数组用 sort 排序后,理论上相同的元素会被放在相邻的位置,
      // 那么比较前后位置的元素就可以了。
      // 问题又来了,1 和 "1" 会被排在一起,不同的 Object 会被排在一起,
      // 因为它们 toString() 的结果相同,所以会出现错误
      // function fun(params) {
      //   return params.sort().filter((item, index, arr) => {
      //     return !index || item != arr[index - 1]
      //   })
      // }
      //第五种
      function fun(arr) {
        let result = []
        let obj = {}
        for (let i of arr) {
          if (!obj[i]) {
            result.push(i)
            obj[i] = 1
          }
        }
        return result
      }
      // fun([1, 2, 3, 32, 31, 2, 2, 2, 1, 1, 1, 3, 3, 3])
      console.log(fun([1, 2, 3, 32, 31, 2, 2, 2, 1, 1, 1, 3, 3, 3]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值