• JavaScript(ES6)学习笔记-Set和Map与数组和对象的比较(二)


    一、Map,Set,Array对比:

    1、增

        let map = new Map();
        let set = new Set();
        let array = [];
    
        map.set('t',1); //Map
        set.add({t:1}); //Set
        array.push({t:1});//数组
        console.info('set-map-array',set,map,array);

    2、查

       let map_exist = map.has('t');
        let set_exist = set.has({t:1});
        let array_exist = array.find(item=>item.t)
        console.info('map-set-array',map_exist,set_exist,array_exist);
    //true(返回布尔值) false  返回的是查找的值

    3、改

       map.set('t',2);
        set.forEach(item=>item.t?item.t=2:'');//set 修改也是通过forEach
        array.forEach(item=>item.t?item.t=2:'');
        console.info('map-set-array-modify',map,set,array);

    4、删除

       map.delete('t');
        set.forEach(item=>item.t?set.delete(item):'');//set删除也是通过forEach
        let index = array.findIndex(item=>item.t);
        array.splice(index,1);
        console.info('map-set-array-modify',map,set,array);

    二、Map、Set、Object对比:

    1、新增

        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.info('map-set-ogj',map,set,obj)        

    2、查找

    console.info({
            map_exist:map.has('t'),
            set_exist:set.has(item),
            obj_exist:'t' in obj
        })

    3、修改

    map.set('t',2);
    item.t = 2; //直接修改item
    obj['t'] = 2;
    console.info('map-set-obj-modify',map,set,obj)

    4、删除

    map.delete('t');
    set.delete(item);
    delete(obj.t)
    console.info('map-set-obj-empty',map,set,obj)

    Map成本低,Set如果在使用过程中没有对数据做一份引用的话,就要通过forEach删除,优先使用Map,如果对数据结构要求存储的唯一性比较高使用Set,放弃使用数组和object。

  • 相关阅读:
    扩展中国剩余定理
    bzoj 3816&&uoj #41. [清华集训2014]矩阵变换
    THUSC2017
    bzoj 4521: [Cqoi2016]手机号码
    bzoj 4871: [Shoi2017]摧毁“树状图”
    bzoj 2300 : [HAOI2011]防线修建
    bzoj 3853 : GCD Array
    HEOI 2017 游记
    bzoj3926: [Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机模板
    bzoj 4310 跳蚤
  • 原文地址:https://www.cnblogs.com/qiu-Ann/p/8257167.html
Copyright © 2020-2023  润新知