zoukankan      html  css  js  c++  java
  • 数组黑科技(偏性能方面)未完待更新...

    数组去重最优解:
      Array.prototype.unique = function () {
        var tmp = new Map();
        return this.filter(item => {
          return !tmp.has(item) && tmp.set(item,
            1);
        })
      }
    

      

    搭配使用
    Array.from('foo'); 
    // ["f", "o", "o"]
    
    let s = new Set(['foo', window]); 
    Array.from(s); 
    // ["foo", window]
    
    let m = new Map([[1, 2], [2, 4], [4, 8]]);
    Array.from(m); 
    // [[1, 2], [2, 4], [4, 8]]
    
    Array.from([1, 2, 3], x => x + x);      
    // [2, 4, 6]
    
    去重
    function combine(){ 
        let arr = [].concat.apply([], arguments);  //没有去重复的新数组 
        return Array.from(new Set(arr));
    } 
    
    var m = [1, 2, 2], n = [2,3,3]; 
    console.log(combine(m,n));  
    

    如果只谈性能,显然是 for > forEach > map,为什么 for 的性能比较好?读一下 forEach 和 map 的规范就知道了。map 会返回一个等长数组,forEach 不会,所以 forEach 大于 map。

    但是哪个快和应该使用哪个,并不应该划等号。
    如果你需要将数组按照某种规则映射为另一个数组,就应该用 map。
    如果你需要进行简单的遍历,用 forEach 或者 for of。
    如果你需要对迭代器进行遍历,用 for of.
    如果你需要过滤出符合条件的项,用 filter.
    如果你需要先按照规则映射为新数组,再根据条件过滤,那就用一个 map 加一个 filter。
  • 相关阅读:
    一个字段串拆分成多行显示或者多行数据合并成一个字符串
    sql server 创建登录名,并赋予访问权限
    调用CMD 执行命令
    安装 mysql
    数组和List以指定的方式拼接成字符串类型
    专业术语
    服务器读取客户端文件
    Docker基本操作
    Docker在Centos上的安装
    SpringBoot一览
  • 原文地址:https://www.cnblogs.com/smzd/p/9073213.html
Copyright © 2011-2022 走看看