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>
  • 相关阅读:
    vs2017 项目调试浏览器网页闪退Bug
    “WebPageBase”在未引用的程序集中定义。必须添加对程序集“System.Web.WebPages, Version=1.0.0.0,Culture=neutral....."的引用
    SQL Server判断日期是否为周六 周日
    获取各国的日期时间
    .net Api项目初步搭建并移除XML格式
    鼠标滚轮事件
    js中if表达式判断规则
    原生轮播图
    C# uri
    SqlServer 备份还原教程
  • 原文地址:https://www.cnblogs.com/mmzuo-798/p/14666272.html
Copyright © 2011-2022 走看看