• ES6(十)map、set与数组和对象的比较


    Map和数组的对比
    
    let map = new Map()
    let array = []
    //
    map.set('t', 1)
    array.push({t: 1})
    console.log('add', map, array)
    //
    let mapExist = map.has('t')
    let arrayExist = array.find(item => item.t)
    console.log('get', mapExist, arrayExist)
    //
    map.set('t', 2)
    array.forEach(item => {
      item = item.t ? item.t = 2 : ''
      return item
    })
    console.log('modify', map, array)
    //
    map.delete('t')
    array.splice(array.findIndex(item => item.t), 1)
    console.log('remove', map, array)
    
    set和数组的对比
    
    let set = new Set()
    let array = []
    //
    set.add({t: 1})
    array.push({t: 1})
    console.info('add', set, array)
    //
    let setExist = set.has({t: 1})
    let arrayExist = array.find(item => item.t)
    console.info('get', setExist, arrayExist)
    //
    set.forEach(item => {
      item = item.t ? item.t = 2 : ''
      return item
    })
    array.forEach(item => {
      item = item.t ? item.t = 2 : ''
      return item
    })
    console.info('modify', set, array)
    //
    set.forEach(item => {
      item = item.t ? set.delete(item) : ''
      return item
    })
    array.splice(array.findIndex(item => item.t), 1)
    console.info('delete', set, array)
    
    
    map、set和对象的使用比较
    
    let item = {t: 1}
    let map = new Map()
    let set = new Set()
    let obj = {}
    
    //
    map.set('t', 1)
    set.add(item)
    obj.t = 1
    console.log('add', map, set, obj)
    //
    console.info({
      action: 'get',
      mapExist: map.has('t'),
      setExist: set.has(item),
      objExist: 't' in obj
    })
    //
    map.set('t', 2)
    item.t = 2
    obj.t = 2
    console.log('modify', map, set, obj)
    //
    map.delete('t')
    set.delete(item)
    delete obj.t
    console.log('remove', map, set, obj)

    示例

          let json1 = {"name":"ES6","day":"2014","feature":"新特性"};
          //json 2 map
          let map1 = new Map();
          for(let i in json1){
            map1.set(i,json1[i]);
          }
          console.log(map1);
    
          //map 2 json
          let map = new Map();
          map.set("name","ES6");
          map.set("day","2014");
          map.set("feature","新特性");
          let json = {};
          for(let [k,v] of map){
            json[k]=v;
          }
          console.log(json);
    
          const num = 1000000;
          let a = {};
          for(let i = 0;i<num;i++){
            a[`element${i}`]=i;
          }
          let start_time = new Date();
          for(let key in a){
            a[key]+=1;
          }
          let end_time = new Date();
          console.log("time cost:",end_time-start_time);
    
          const num = 1000000;
          let a = new Map();
          for(let i = 0;i<num;i++){
            a.set(`element${i}`,i);
          }
          let start_time = new Date();
          for(let key of a.keys()){
            a.set(key,a.get(key)+1);
          }
          let end_time = new Date();
          console.log("time cost:",end_time-start_time);

    循环方式

    projectMap.forEach(function (value, key, map) {
        //value和key就是map的key,value,map是map本身
    });

    去重

    let arr = [4, 1, 3, 3, 2, '2'];
    let uniqueArr = [...new Set(arr)];
    console.log(uniqueArr); // [4, 1, 3, 2, "2"]
    that.dataInfo = [...new Set(that.dataInfo.concat([], res.data.data.result))]
    let newArr = Array.from(that.dataInfo)
    console.log(newArr)
  • 相关阅读:
    dns
    sqlserver中int 类型的字段,值为null的时候引发一个问题
    后台读取数据库中值,返回的值出乎意料,并引发了StackOverflowException
    软件设计原则的一些学习总结
    Python基础(5):模块
    SQL 知识纲要
    Linux编程学习笔记Devices
    Python基础(3):函数
    Python基础(2):控制结构
    Python基础(4):类
  • 原文地址:https://www.cnblogs.com/ronle/p/11494891.html
Copyright © 2020-2023  润新知