Set 地址1、地址2
一种新的类似数组的数据结构,保证值唯一。
入参:具有 iterable 接口的数据,如数组:const set= new Set([1,2,3,4,4]);
去除数组 arr 重复成员:
1、[...newSet(arr)]
2、const items = new Set([1,2,3,4,5]); const array=Array.from(items);
属性:prototype、size
方法:add\delete\has\clear
遍历:keys\values\entries\forEach
遍历的应用:求交集、并集、差集:
let a=newSet([1,2,3]); let b=newSet([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}
字符串转换:
var text = 'Indiana'; var mySet = newSet(text);
map: 地址
背景:传统对象的键值对, key 只能为 字符串;map 的 key 值可以是各种值 (如数组、对象),也就是值值对。
入参:可接收 具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构
方法:set\get\delete\has\size\clear
注意:map 的键实际是跟内存地址绑定的。
遍历方法:keys\values\entries\forEach
map 结构转换为数组:
const map=new Map([[1,'one'],[2,'two'],[3,'three'],]);
[...map.keys()] // [1, 2, 3]
[...map.values()] // ['one', 'two', 'three']
[...map.entries()] // [[1,'one'], [2, 'two'], [3, 'three']]
[...map] // [[1,'one'], [2, 'two'], [3, 'three']]
不同类型相互转化:数组、map、set、json、对象