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));

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

  • 相关阅读:
    Linux下修改/设置环境变量JAVA_HOME
    php WNMP(Windows+Nginx+Mysql+php)配置笔记
    jetty
    eclipse 打包
    js 稍微判断下浏览器 pc 还是手机
    mysql 自增长
    mac 终端命令
    KVC,KVO
    Swift
    构造函数,析构函数的区别
  • 原文地址:https://www.cnblogs.com/webBlog-gqs/p/14232742.html
Copyright © 2011-2022 走看看