ES6新增两种数据结构 set和map 和一种数据类型Symbol

1.ES6 提供了新的数据结构 Set,没有重复元素,类似于数组数据结构

2. Map  键值对的双列集合  

<1> JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是只能用字符串当作键。这给它的使用带来了很大的限制.

<2> Map也是键值对,但是键的范围不限于字符串,各种类型的值都可以当做对象。

// 2:属性和方法
    // 属性:constructor、size
    // 方法:操作方法和遍历方法
    // get(key);
    // set(key,value);
    // delete(value)
    // has(value)
    // clear()
    // Array.from(set)=>array
    // keys();键的集合
    // values();值的集合
    // entries();键值对的集合
    // forEach();set.forEach((value, key)=>console.log(value*2));
    // 扩展运算符内部用for...of循环,所以也可以用于Set结构,数组的map和filter方法也可以用于Set了。

   

3.set 用法

<1> 数组去重

// 数组去重
let arr = [1,2,1,3,3,4,7,7];
console.log(new Set(arr)) // Set(5) {1, 2, 3, 4, 7}
//创建Set实例
let  set = new Set()
console.log(set);

var arr = [1,2,3,4,5,6,7,8];
// arr.map(function(item) {
//     set.add(item)
// })
arr.map(item=>set.add(item))

console.log(set);



//2:常见操作

var s = new Set([1,23,123,45,345,67,532,897,976,458,342,682])
// s.delete(123)
console.log(s);
// console.log(s.has(680));
// console.log(Array.from(s));
// console.log(...s);
// console.log([...s]);

4.map 用法

    var map = new Map()

    let i = 10;
    map.set(i,"aaaa");
    let o = {name:"tom"};
    map.set(o,"queen");
    console.log(map);
    console.log(map.has(o));
    map.delete(o)
    console.log(map);


    // var m = new Map([["name","tom"],["age",18],["hobby","swimming"]])
    // console.log(m);
    
    var mm = new Map().set(false,88).set({o:"jack"},['a','b'])
    console.log(mm);
    console.log(...mm);
    console.log([...mm]);

    mm.forEach((v,k)=>{
        console.log(v+" : "+ k);
    })

    for (let i of mm.keys()) {
        console.log(typeof i);  
        console.log(i);  
    }

    for (let i of mm.values()) {
        console.log(typeof i);  
        console.log(i);  
    }
    for (let i of mm.entries()) {
        console.log(typeof i);  
        console.log(i);  
    }

1.ES6 引入了一种新的原始(基本)数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

2.ES6 数据类型除了 Number 、 String 、 Boolean 、 Object、 null 和 undefined ,还新增了 Symbol 

3.基本用法

let sy = Symbol("");
console.log(sy); // Symbol(m)
console.log(typeof(sy)); // "symbol"
 //1.symbol   表示独一无二的值
    // 引入Symbol数据类型的目的,因为住在ES5中对象的属性都是字符串,这样很容易造成明明冲突或覆盖
    //对于我们的Object来说,对象属性名就可以有两种数据类型了,一种是原来的字符串,那么另一种就是现 
在ES6中的Symbol
    相同参数 Symbol() 返回的值不相等
    // let S1 = Symbol('kdc')
    // let S2 = Symbol('kdc')
    // if (S1 === S2) {
    //     console.log(true);
    // } else {
    //     console.log(false); // false
    // } 

4.数据类型的判断

// Symbol  es6新增的数据类型  代表独一无二的值   作用是用来区别对象中相同的属性   
 
 
// 创建Symbol数据类型   Symbol();
 
let s1 = Symbol("king");
let s2 = Symbol("king");
 
console.log(s1)
console.log(s2)
console.log(typeof s2)
if (s1 == s2) {
    console.log("两个s一致")
}else {
    console.log("两个s不一致")
}
 
// 可以转换为字符串和布尔   但不能转为数字
console.log(Symbol("king"))
console.log(Symbol("king").toString())
console.log(!Symbol("king"))
console.log(Number(Symbol("king")))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值