1. 程式人生 > 實用技巧 >es6 Map&Set

es6 Map&Set

<script type="text/javascript">

    // map基本使用
    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是物件
    let obj={};
    map.set(obj,'物件');
    console.log(map.get(obj));

    
// key是函式 let func=function(){}; map.set(func,'函式'); console.log(map.get(func)); // key是NaN map.set(NaN,'NaN'); console.log(map.get(NaN)); console.log(map.get(Number('aaa'))); // Map迭代 // for ..of for(let[key,value] of map){ console.log(key,value); }
// forEach map.forEach(function(value,key){ console.log(value,key); }) console.log('所有的key'); for(let key of map.keys()){ console.log(key) } console.log('所有的值'); for(let value of map.values()){ console.log(value); } // Map物件操作 // Map與Array轉換
// 陣列轉Map let arr=[['k1','v1'],['k2','v2']]; let map2=new Map(arr); console.log(map2); // Map轉陣列 let arr2=Array.from(map2); console.log(arr2); // Map合併 let map3=new Map([...map,...map2]); console.log(map3); // Set物件 // Set裡的value值是唯一的 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('張三'); console.log(mySet); // set遍歷 // for ...of for(let value of mySet.values()){ console.log(value); } mySet.forEach(function(value){ console.log(value) }); // Set陣列轉換 let arr3=[['k1','v1'],['k2','v2']]; let set3=new Set(arr3); console.log(set3) let arr4=[...set3]; console.log(arr4) // 陣列去重 let arr5=[1,3,5,3,6]; let set6=new Set(arr5); let arr6=[...set6]; console.log('陣列去重') 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('求並集') 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('求交集') 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('求差集') console.log(difference) </script>