let ary = [1,2,3,4,4,4,4]; let setData = new Set(); ary.forEach((p) => { setData.add(p) }) console.log(setData) // [1,2,3,4]
let setData = new Set([1,2,3,4,4,4,4]); // [1,2,3,4] let setDiv = new Set(document.getElementsByTagName('div'))
let ary = [NaN,NaN,NaN,5,'5',{},{}] let setData = new Set(ary);// [NaN,5,'5',{},{}]
// 數組去重 let ary = [1,2,3,3,3,3]; let setData = new Set(ary); ary =Array.from(setData); // 結合擴展運算符 let arr = [1,2,3,3,3,3]; let unique = [...new Set(arr)];
數組的map和filter也能夠間接用於set數據,先將set數據轉化成數組,在使用map等數組方法數組
因此set很容易實現交併差集數據結構
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); // 並集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} // 差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}
let mapData = new Map([ ['name','zhan'] //雙元素 ]); mapData.get('name') // 'zhan'
let mapData = new Map(); mapData.set('name', 'zhan').set('name', 'hui'); mapData.get('name'); //'hui'
let mapData = new Map().get('name'); // undefined
//下面兩個對象對應的內存地址不一樣, let mapData = new Map(); mapData.set({},'zhan'); mapData.get({}); //undefined
let map = new Map(); map.set(-0, 123); map.get(+0) // 123 map.set(true, 1); map.set('true', 2); map.get(true) // 1 map.set(undefined, 3); map.set(null, 4); map.get(undefined) // 3 map.set(NaN, 123); map.get(NaN) // 123
let mapData = new Map([ ['name', 'zhan'], ['age', 25], ['sex', 'boy'] ]); let ary = [...mapData.keys()]; // ['name','age','sex']; let ary_ =[...mapData.entries()]; // [['name', 'zhan'],['age', 25],['sex', 'boy']] let ary__ =[...mapData]; // [['name', 'zhan'],['age', 25],['sex', 'boy']]
const map0 = new Map() .set(1, 'a') .set(2, 'b') .set(3, 'c'); const map1 = new Map( [...map0].filter(([k, v]) => k < 3) );
let myElement = document.getElementById('logo'); let myWeakmap = new WeakMap(); myWeakmap.set(myElement, {timesClicked: 0}); myElement.addEventListener('click', function() { let logoData = myWeakmap.get(myElement); logoData.timesClicked++; }, false);