博客信息

ES6(Map与Set)

发布时间:『 2019-07-28 10:59』  博客类别:前端框架  阅读(855)

1、map的基本使用,key可以是任意类型

2、Map的迭代

3、Map对象操作、maparray的相互转换

4、Set对象的唯一性

5、Set 数组转换、交集并集差集


    // 基本使用 key是基本类型
    console.log('基本使用 key是基本类型.............');
    let map=new Map();
    map.set('name','张三');
    map.set('age',11);
    map.set('已婚',false);

    console.log(map.get('name'));
    console.log(map.get('age'));
    console.log(map.get('已婚'));

    // key是对象
    console.log('key是对象.............');
    let obj={};
    map.set(obj,'对象');

    console.log(map.get(obj));

    // key是函数
    console.log('key是函数.............');
    let func=function(){};
    map.set(func,'函数');

    console.log(map.get(func));

    // key是NaN
    console.log('key是NaN.............');
    map.set(NaN,'NaN');

    console.log(map.get(NaN));
    console.log(map.get(Number('aaa')));

    // Map迭代
    // for ...of
    console.log('Map迭代.............');
    let map2=new Map();
    map2.set('name','张三');
    map2.set('age',11);
    map2.set('已婚',false);

    for(let [key,value] of map2){
        console.log(key,value)
    }

    // 查询所有key
    for(let key of map2.keys()){
        console.log(key)
    }

    // 查询所有value
    for(let value of map2.values()){
        console.log(value)
    }

    // forEach方法迭代
    map2.forEach(function(value,key){
        console.log(key,value)
    });

    // Map对象操作
    // Map与Array转换
    // 数组转Map
    console.log('Map对象操作、map与array的相互转换.............');
    let arr=[['k1','v1'],['k2','v2']];
    let map3=new Map(arr);
    map3.forEach(function(value,key){
        console.log(key,value)
    });

    // Map转数组
    let arr2=Array.from(map3);
    console.log(arr2);

    // Map合并
    let map4=new Map([...map3,...map2]);
    console.log(map4);

    // Set对象
    // Set里的value值是唯一的
    console.log('Set对象的唯一性.............');
    let myMap=new Map();
    myMap.set('no001','张三');
    myMap.set('no002','李四');
    myMap.set('no003','张三');

    console.log(myMap);
    let mySet=new Set();
    mySet.add('张三');
    mySet.add('李四');
    mySet.add('张三');

    // 遍历
    for(let value of mySet.values()){
        console.log(value)
    }

    mySet.forEach(function(value){
        console.log(value)
    });

    // Set 数组转换
    // 数组 转Set
    console.log('Set 数组转换、交集并集差集.............');
    let arr3=[['k1','v1'],['k2','v2']];
    let set3=new Set(arr3);

    console.log(set3);



    // set转数组
    let arr4=[...set3];
    console.log(arr4);

    // 数组去重
    let arr5=[1,3,5,3,6];
    let set6=new Set(arr5);
    let arr6=[...set6];

    console.log(arr6);

    // 求并集
    let a = new Set([1, 2, 3]);
    let b = new Set([4, 3, 2]);
    let union = new Set([...a, ...b]); // {1, 2, 3, 4}

    console.log(union);

    // 求交集
    let a2 = new Set([1, 2, 3]);
    let b2 = new Set([4, 3, 2]);
    let intersect = new Set([...a2].filter(x => b2.has(x))); // {2, 3}

    console.log(intersect);

    // 求差集
    let a3 = new Set([1, 2, 3]);
    let b3 = new Set([4, 3, 2]);
    let difference = new Set([...a3].filter(x => !b3.has(x))); // {1}

    console.log(difference)


小李飞刀_ES6



over......


关键字:     前端框架       ES6  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有