美文网首页
ES6(Set-Map与数组和对象的对比)

ES6(Set-Map与数组和对象的对比)

作者: KATENGC | 来源:发表于2020-04-28 17:50 被阅读0次
一、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

相关文章

网友评论

      本文标题:ES6(Set-Map与数组和对象的对比)

      本文链接:https://www.haomeiwen.com/subject/ipdbwhtx.html