zoukankan      html  css  js  c++  java
  • 模拟 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));

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

  • 相关阅读:
    O(n)回文子串(Manacher)算法
    LightOJ 1282
    LightOJ
    LightOJ
    POJ-2563
    POJ-2398
    POJ-2318
    ZOJ-3318
    [svc]ftp协议数据连接的2种模式
    [py]python中的特殊类class type和类的两面性图解
  • 原文地址:https://www.cnblogs.com/webBlog-gqs/p/14232742.html
Copyright © 2011-2022 走看看