let set = newSet(['red', 'green', 'blue']); //键 for ( let item of set.keys() ){ console.log(item); } // red // green // blue //================================================ //值 for ( let item of set.values() ){ console.log(item); } // red // green // blue //================================================ //键-值 for ( let item of set.entries() ){ console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"] //================================================ //直接遍历Set【默认就是遍历values】 let set = newSet(['red', 'green', 'blue']); for (let x of set) { console.log(x); } // red // green // blue //================================================ //扩展运算符(...)内部使用 for...of 循环,所以也可以用于 Set 结构。 let set = newSet(['red', 'green', 'blue']); let arr = [...set]; // ['red', 'green', 'blue'] //【补充】这就提供了另一种便捷的去除数组重复元素的方法。 let arr = [3, 5, 2, 2, 5, 5]; let unique = [...new Set(arr)]; // [3, 5, 2]
数组的 map 和 filter 方法也可以用于 Set 了。
1 2 3 4 5 6 7
let set = newSet([1, 2, 3]); set = newSet([...set].map(x => x * 2)); // 返回Set结构:{2, 4, 6}
let set = newSet([1, 2, 3, 4, 5]); set = newSet([...set].filter(x => (x % 2) == 0)); // 返回Set结构:{2, 4}
set并集和交集
1 2 3 4 5 6
let a = newSet([1, 2, 3]); let b = newSet([4, 3, 2]); //并集[1, 2, 3, 4] let union = newSet([...a, ...b]); //交集[2, 3] let intersect = newSet([...a].filter(x => b.has(x)));
Set 结构的实例的 forEach 方法,用于对每个成员执行某种操作,没有返回值。
1 2 3 4 5
let set = newSet([1, 2, 3]); set.forEach((value, key) =>console.log(value * 2) ) // 2 // 4 // 6
遍历操作中,同步改变原来的 Set 结构,目前没有直接的方法,但有两种变通方法
1 2 3 4 5 6 7 8 9
// 方法一 let set = newSet([1, 2, 3]); set = newSet([...set].map(val => val * 2)); // set的值是2, 4, 6
// 方法二 let set = newSet([1, 2, 3]); set = newSet(Array.from(set, val => val * 2)); // set的值是2, 4, 6
Map
讲map之前,先了解一下:
Array的key是0,1,2,3。。。。
Set的key是和Value一样
那么Map的key是可自定义键名,并且键可以是任意类型
瞅一个栗子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
let m = newMap(); m.set("A",'fengan') m.set("age",18) m.set(3,33) m.set(null,33) m.set(null,44)//后面会覆盖前面 console.warn("size="+m.size)//size=4 console.warn(...m)//['A','fengan']['age',18][null,44] //通过key取value console.warn(m.get("haha"))//undefined,若无对应key,则为undefined console.warn(m.get(3))//33 console.warn(m.get(null))//44 //判断是否有指定key console.warn(m.has(null))//true console.warn(m.has(3))//true console.warn(m.has("age1"))//false
再瞅一个栗子
1 2 3 4 5 6 7 8 9 10 11 12 13
var map = newMap(); var k1 = ['a']; var k2 = ['a']; map.set(k1, 111); map.set(k2, 222); map.get(k1) // 111 map.get(k2) // 222 【注意,这俩key不算同一个key,内存地址不一样,就视为两个键】