js数组的去重的几种方法

  1. 根据set数据结构值不能重复的特点, 先转为set结构再转回数组
let arr = [1,2,3,1,2]
let unique = [...new Set(arr)]
  1. 双重for循环
    function unique(arr) {
      var res = []
      for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < res.length; j++) {
          if (arr[i] === res[j]) {
            break
          }
        }
        if (j === res.length) {
          res.push(arr[i])
        }
      }
      return res
    }
  1. 外层for循环, 内部使用includes判断是否已存在
    function unique(arr) {
      let res = []
      for (let i = 0; i < arr.length; i++) {
        if (!res.includes(arr[i])) {
          res.push(arr[i])
        }
      }
      return res
    }
  1. 先排序. 使用for循环遍历, 内部只要比较后一个与前一个是否相等即可
    function unique(arr) {
      let res = []
      let sortArr = arr.concat().sort()
      for (let i = 0; i < sortArr.length; i++) {
        if (sortArr[i] !== sortArr[i-1] || i === 0)  {
          res.push(sortArr[i])
        }
      }
      return res
    }
  1. 使用filter遍历 , 内部判断改元素是否第一次出现
    function unique(arr) {
      let arr = arr.filter((item, index, arr) => {
        return arr.indexof(item) === index
      })
      return res
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。