zoukankan      html  css  js  c++  java
  • js 算法 两个数组比较去重,性能优化

    如果追求性能,可以采用空间换时间的做法,在JS中最常见的处理方式就是构建Object,因为Object查找key的时间复杂度是O(1),而数组是O(n)

    <!DOCTYPE html>
    <html>
    <head>
        <title>js两个数组比较去重</title>
    </head>
    <body>
    <script type="text/javascript">
        // 如果追求性能,可以采用空间换时间的做法,在JS中最常见的处理方式就是构建Object,因为Object查找key的时间复杂度是O(1),而数组是O(n)
        const list1 = [
            {id: 0, name: 'xiaomin'},
            {id: 1, name: 'xiaohong'},
        ];
        const list2 = [
            {id: 0, name: 'xiaomin'},
            {id: 1, name: 'xiaohong'},
            {id: 3, name: 'xiaomin'},
            {id: 4, name: 'xiaohong'},
        ];
        // 首先构造Object
        const idSet = list1.reduce((acc, v) => {
            acc[v.id] = true;
            return acc;
        }, {});
        console.log('构造Object', idSet)
        // 遍历list2,去掉在idSet中存在的id
        const result = list2.filter(v => !idSet[v.id]);
        const repeat = list2.filter(v => idSet[v.id]);
        console.log('去重后的result', result)
        console.log('重复的repeat', repeat)
    </script>
    </body>
    </html>

    打印结果:

    <!DOCTYPE html>
    <html>
    <head>
      <title>js两个数组比较去重</title>
    </head>
    <body>
    <script type="text/javascript">
      // 如果追求性能,可以采用空间换时间的做法,在JS中最常见的处理方式就是构建Object,因为Object查找key的时间复杂度是O(1),而数组是O(n)
      const list1 = [
          {id: 0, name: 'xiaomin'},
          {id: 1, name: 'xiaohong'},
      ];
      const list2 = [
          {id: 0, name: 'xiaomin'},
          {id: 1, name: 'xiaohong'},
          {id: 3, name: 'xiaomin'},
          {id: 4, name: 'xiaohong'},
      ];
      // 首先构造Object
      const idSet = list1.reduce((accv=> {
          acc[v.id] = true;
          return acc;
      }, {});
      console.log('构造Object', idSet)
      // 遍历list2,去掉在idSet中存在的id
      const result = list2.filter(v => !idSet[v.id]);
      const repeat = list2.filter(v => idSet[v.id]);
      console.log('去重后的result', result)
      console.log('重复的repeat', repeat)
    </script>
    </body>
    </html>
  • 相关阅读:
    ESRI Shapefiles (SHP)
    Python与开源GIS:在OGR中使用SQL语句进行查询
    [推荐]网店代销的卖家,你的宝贝名称修改了吗?
    怎么把经纬度转换成标准的度分秒单位
    如何提高淘宝流量
    十八种方法提升淘宝店流量
    mysql备份数据库几种方法
    Linux查看文件编码格式及文件编码转换
    MySQL 修改字段类型或长度
    mysql外键使用和级联
  • 原文地址:https://www.cnblogs.com/mmzuo-798/p/14666272.html
Copyright © 2011-2022 走看看