一、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。