模拟 ES6 SET 数组去重

两种方法模拟 ES6  set 数组去重

第一种,利用字符串 indexOf 

function MYSET(arr) {
      let str = '';
      let newArr = [];
      if (arr.length) {
        newArr.push(arr[0]);
        str += JSON.stringify(arr[0]);
        for (let i = 1; i < arr.length; i++) {
          let temp = JSON.stringify(arr[i])
          if (str.indexOf(temp) === -1) {
            str += temp;
            newArr.push(arr[i]);
          }
        }
      }
      return newArr;
    }
    let arr = [3, 1, 3, 1, 2, 2, {
      a: 1
    }, {
      b: 1
    }, {
      a: 1
    }];
    console.log(MYSET(arr));

第二种,利用对象 key 值不重复的特点

function MYSET(arr) {
      let obj = {};
      let newArr = [];
      if (arr.length) {
        newArr.push(arr[0]);
        obj[JSON.stringify(arr[0])] = arr[0];
        for (let i = 1; i < arr.length; i++) {
          let temp = JSON.stringify(arr[i]);
          if (!obj[temp]) {
            obj[temp] = arr[i];
            newArr.push(arr[i]);
          }
        }
      }
      return newArr;
    }
    let arr = [3, 1, 3, 1, 2, 2, {
      a: 1
    }, {
      b: 1
    }, {
      a: 1
    }];
    console.log(MYSET(arr));

这就是我最近想到并实现的两种方法,如果有其他或者是更好的实现方法,希望大家留言评论告诉我。

原文地址:https://www.cnblogs.com/webBlog-gqs/p/14232742.html