数组-去重

1、ES6: new Set() Set对象是值的集合,里面的元素唯一,不能去除空对象{}; 2、indexOf 3、includes 4、sort 5、splice()

1、new Set()

    let arr = [1, 2, 2, 'a', 'a', 3, null, null, undefined, undefined, NaN, NaN, {}, {}]
    let arr1 = Array.from(new Set(arr))
    // let arr1 = [...new Set(arr)]
    console.log(arr1); //  [1, 2, "a", 3, null, undefined, NaN, {}, {}]

2、indexOf() 不能去除空对象{} 和 NaN

    let arr = [1, 2, 2, 'a', 'a', 3, null, null, undefined, undefined, NaN, NaN, {}, {}]
    function unique(arr) {
      let arr1 = []
      arr.forEach(item => {
        arr1.indexOf(item) === -1 && arr1.push(item)
      })
      return arr1
    }
    console.log(unique(arr)); // [1, 2, "a", 3, null, undefined, NaN, NaN, {}, {}]

3、includes()

    let arr = [1, 2, 2, 'a', 'a', 3, null, null, undefined, undefined, NaN, NaN, {}, {}]
    function unique(arr) {
      let arr1 = []
      arr.forEach(item => {
        !arr1.includes(item) && arr1.push(item)
      })
      return arr1
    }
    console.log(unique(arr)); // [1, 2, "a", 3, null, undefined, NaN, {}, {}]

4、sort() 排序后,相邻元素比较

    let arr = [1, 2, 2, 'a', 'a', 3, null, null, undefined, undefined, NaN, NaN, {}, {}]
    function unique(arr) {
      let arr1 = arr.sort()
      let array =[arr1[0]]
      for (let i = 1;i < arr1.length;i++) {
        if (arr1[i] !== arr1[i-1]) {
          array.push(arr1[i])
        }
      }
      return array
    }
    console.log(unique(arr)); // [1, 2, 3, NaN, NaN, {}, {}, "a", null, undefined]

5、splice() 两个for循环,

    let arr = [3, 3, 3, 'a', 'a', 3, null, null, undefined, undefined, NaN, NaN, {}, {}]
    function unique(arr) {
      for (let i = 0;i < arr.length; i++) {
        for (let j = i + 1;j < arr.length; j++) {
          if (arr[i] === arr[j]) {
            arr.splice(j, 1) // 第二个和第一个相同,删除第二个,第二次遍历索引值必需减1,再次比较
            j--
          }
        }
      }
      return arr
    }
    console.log(unique(arr));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容