<script>
//Map转二维数组
var arr1=[["name","karen"],["age",20]]
var map1=new Map(arr1)
// Map 构造函数可以将一个二维键值对数组转换成一个 Map 对象
console.log(map1); // {'name' => 'karen', 'age' => 20}
//二维数组转Map
var arr2=Array.from(map1)
console.log(arr2); //['name', 'karen'] ['age', 20]
console.log(arr1,map1,arr2,arr1==arr2) //...false 不是同一个数组
console.log(arr1[2][1]==arr2[2][1])//true Array.from()里面的对象是同一个
</script>
Map转Array:构造Map函数,将数组传入Map
Array转Map:用Array.from静态方法,将Map传入
<script>
var arr1=[{name:"rose"},20,{name:"rose"},20,30]
//{name:"rose"}:这是两个不同的对象;20 20 是同一个基本数据
//数组转集合
var set1=new Set(arr1)
console.log(set1,set1.size) //{{…}, 20, {…}, 30} 4
//集合转数组
var arr2=Array.from(set1)
console.log(arr1,set1,arr2)
//[{…}, 20, {…}, 20, 30] {{…},20,{…},30} [{…},20,{…},30]
//对比两个数组中的引用对象是否相等
console.log(arr1[4]==arr2[3]) //true 是同一个对象
</script>
Set转Array:构造Set函数,将数组传入Set
Array转Set:用Array.from静态方法,将Set传入
Array.from转换时也没有创建新的对象
<script>
var arr1=[1,"hi"]
var arr2=[2,"hihi"]
var arr3=[3,"hello"]
//...将数组中的每个元素取出,装入集合里
var set1=new Set([...arr1,...arr2,...arr3])
//数组转map是二维数组
var map1=new Map([arr1,arr2,arr3]) //这样写是二维数组
var map2=new Map(map1) //Map的克隆
//map1和map2都是{1 => 'hi', 2 => 'hihi', 3 => 'hello'} false
console.log(map1,map2,map1==map2) //false 因为new关键字创建了新对象
//new:如果克隆的源对象有对象{},则克隆出的对象是同一个对象
//克隆是浅拷贝
</script>
<script>
//String转Set
var mySet = new Set('hello');
console.log(mySet);// Set(4) {"h", "e", "l", "o"}
</script>
Set 中 toString 方法是不能将 Set 转换成 String