Set 结构的实例有四个遍历方法,可以用于遍历成员。 keys():返回键名的遍历器 values():返回键值的遍历器 entries():返回键值对的遍历器 forEach():使用回调函数遍历每个成员 需要特别指出的是,Set的遍历顺序就是插入顺序。 由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。 Set 结构的实例默认可遍历,它的默认遍历器生成函数就是它的values方法。 这意味着,可以省略values方法,直接用for...of循环遍历 Set。 扩展运算符(...)内部使用for...of循环,所以也可以用于 Set 结构。
1 keys():返回键名的遍历器 2 let set5 = new Set([4, 5, 'hello']) 3 console.log('iterate useing Set.keys()') 4 for(let item of set5.keys()) { 5 console.log(item) 6 } 7 输出:iterate useing Set.keys() 4 5 hello 8 9 values():返回键值的遍历器 10 console.log('iterate useing Set.values()') 11 for(let item of set5.values()) { 12 console.log(item) 13 } 14 输出:iterate useing Set.keys() 4 5 hello 15 如上述:由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。 16 17 entries():返回键值对的遍历器 18 console.log('iterate useing Set.entries()') 19 for(let item of set5.entries()) { 20 console.log(item) 21 } 22 输出:iterate useing Set.entries() [ 4, 4 ] [ 5, 5 ] [ 'hello', 'hello' ]
应用
1 let arr = ['1', '2', '3', '2', '3', '4', '5'] 2 let arr1 = ['4', '1', '3', '6'] 3 4 //arr去重 5 let result = new Set(arr) 6 console.log(result);// Set类型。输出 1,2,3,4,5 7 // 转换成数组类型 由于Set集合实现了Iterator接口,因此可以使用扩展运算符... 8 console.log([...result]); // Array类型 [1,2,3,4,5] 9 10 //arr和arr1交集 11 console.log([...new Set([...arr, ...arr1])]); //Array类型 [1,2,3,4,5,6] 12 13 //并集 14 let common = [...new Set(arr)].filter(item => new Set(arr1).has(item)) 15 console.log(common); // Array类型 [1,3,4] 16 17 //差集 18 let diff = [...new Set(arr)].filter(item => !(new Set(arr1).has(item))) 19 console.log(diff); // Array类型 [2,5]
Map对象
1 // Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 2 // Map 的键值对个数可以从 size 属性获取 3 let m = new Map(); 4 5 //新增 6 m.set('name', 'map') 7 m.set('age', '不详') 8 // console.log(m) // 'name' => 'map' 9 10 let key = { 11 team: 'RNG' 12 } 13 m.set(key, 'UZI') 14 // console.log(m) // { 'name' => 'map',{team:'RNG'}=>'UZI'} 15 16 //删除 17 m.delete(key) 18 console.log(m) // 'name' => 'map' 19 20 // 遍历 21 for(let i of m){ 22 console.log(i) // Array 类型 ['name', 'map'] ['age', '不详'] 23 } 24 25 // 清空 26 m.clear() 27 console.log(m) // Map(0) {size: 0}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。