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。

原文地址:https://www.cnblogs.com/qiu-Ann/p/8257167.html