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