一、Symbol
ES5中的基本数据:null undefined number boolean string
ES6新增的基本数据: Symbol
Symbol是一个内置全局函数,生成一个独一无二的数据
var re=Symbol("hello")
var re2=Symbol("hello")
console.log(re,re2,re==re2)//Symbol"hello" Symbol"hello" false
二、Map
Map是es6出的新数据容器技术,es6中的数据容器:数组、对象等。都是存取数据的。要注意Map没有语法糖。
- Map的初始化、取数据、存数据的方法:
//初始化
var m1=new Map([["RJY",100],[20,"rjy"]])//初始化,键值可以字符串,数字,数组(注意数组中不能直接写成引用数据,如["key"],如需要写就要在外部声明一个变量等于引用数据的数组:var a=["key"])
//答案:Map(2){'RJY'=>100,20=>'rjy'}
//取数据
var re1=m1.get("RJY")//取key值
//答案:100
//存数据
var re2=m1.set("rJY",37)//存入key值和valu值
- 可用size取到Map的大小:
console.log(m1.size)
- 可用delete删除Map中的数据:
var re5=m1.delete("RJY")//删除的是key值
//如果删除,返回布尔值true,如果没删除(里面没有这个key),就会返回false
- 可用clear清除所有数据:
m1.clear()
console.log(m1)
三、Set
- Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
var arr=[11,22,33,11]
var s1=new Set(arr)//遍历的数组 然后把数组的元素们调用s1.add添加进集合中
var arr2=Array.from(s1)//取出了数据容器中的所有数据 然后存入新数组返回值
console.log(arr2)
- 可用add添加元素(若添加的元素有重复的,就只会显示一个):
var arr=[11,22,33,11]
var s1=new Set(arr)//遍历的数组 然后把数组的元素们调用s1.add添加进集合中
s1.add(100)
console.log(s1)
//答案:Set(4) {11, 22, 33, 100}
s1.add([100])
console.log(s1)
//答案:Set(4) {11, 22, 33, Array(1)}
- 可用...方法取出数组中的元素
var arr=[10,20,30,10,{}]
var arr2=[...arr]//把arr的元素全部取出 然后存入新数组arr2中
console.log(arr,arr2,arr==arr2,arr[4]==arr2[4])
//答案:(5) [10, 20, 30, 10, {…}] (5) [10, 20, 30, 10, {…}] false true
- 可以用Set实现并集功能
var arr = [0, 1, 2, 3,{}]
var arr2 = [4,5,3,6]
var s1 = new Set([...arr,...arr2])
console.log(s1)
/*答案
Set(8) {0, 1, 2, 3, {…}, …}
[[Entries]]
0: 0
1: 1
2: 2
3: 3
4: Object
5: 4
6: 5
7: 6
size: 8
*/
- 可以实现交集功能
var arr = [0, 1, 2, 3,{}]
var arr2 = [4,5,3,6]
var s2 = new Set(arr.filter(function(el) {
if (arr2.includes(el)) {
return el
}
}))
console.log(s2)
/*答案
Set(1) {3}
[[Entries]]
0: 3
value: 3
size: 1
*/
四、arr-map-set的转换
-
arr<===>map
//arr===>map:必须是二维数组
var arr=[[1,"hello"],[2,"h5"],[3,{name:"karen"}]]
var m1=new Map(arr)
//map===>arr: Array.from()静态方法
var arr2=Array.from(m1)
console.log(arr,m1,arr2,arr==arr2,arr[2][1]==arr2[2][1])
-
arr<===>set
//arr===>set
var arr=[100,200,100,{age:20},{age:20}]
var s1=new Set(arr)
console.log(s1,s1.size)
//set===>arr
var arr2=Array.from(s1)
console.log(arr,s1,arr2,arr[4]==arr2[3])
-
多个arr转map和set用:...
//多个数组转集合和map: ...
var arr1=[10,20]
var arr2=[100,20]
var arr3=[200,{name:"karen"}]
var s1=new Set([...arr1,...arr2,arr3])