一、Map和数组的对比(增删改查)
{
let map = new Map();
let arr = [];
//增
map.set('t', 1);
arr.push({t: 1});
console.log('增', map, arr);
//改
map.set('t', 2);
arr.forEach(item => item.t ? item.t = 2 : '');
console.log('改', map, arr);
//查
let map_exist = map.has('t');
let arr_exist = arr.find(item => item.t);
console.log('查', map_exist, arr_exist);
//删
map.delete('t');
let index = arr.findIndex(item => item.t);
arr.splice(index, 1);
console.log('删', map, arr);
}
结合以上测试代码,可以看出Map的优势
二、Set和数组的对比(增删改查)
{
let set = new Set();
let arr = [];
let o = {t: 1};
//增
set.add(o);
arr.push(o);
console.log('增', set, arr);
//改
set.forEach(item => item.t ? item.t = 2 : '');
arr.forEach(item => item.t ? item.t = 2 : '');
console.log('改', set, arr);
//查
let set_exist = set.has(o);
let arr_exist = arr.find(item => item.t);
console.log('查', set_exist, arr_exist);
//删
set.forEach(item => item.t ? set.delete(item) : '');
let index = arr.findIndex(item => item.t);
arr.splice(index, 1);
console.log('删', set, arr);
}
三、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('增', map, set, obj);
//查
console.log('查', map.has('t'), set.has(item), 't' in obj);
//改
map.set('t', 2);
item.t = 2;
obj['t'] = 2;
console.log('改', map, set, obj);
//删
map.delete('t');
set.delete(item);
delete obj['t'];
console.log('删', map, set, obj);
}
总结:优先使用Map,若要考虑数据的唯一性使用Set






网友评论