ECMAscript6快速入门-set和map

时间:2022-05-26 04:36:08

set

就是一种集合 : 是由一组无序且唯一的项组成
特点:key 和 value 相同,不会重复

1.创建一个set

    const s = new set([1,2,3]);

2.属性

    s.size;

3.方法

    //1.添加
    s.add(value)//添加一个数据,返回set本身
    s.add('a').add('b').add('c')

    //2.删除
    s.delete(value)//删除一个数据,返回布尔值,表示是否删除成功
    s.delete('a')//true
    s.delete('a')//false

    //3.查找
    s.has(value)//判断是否是set的成员,返回布尔值

    //4.格式化
    s.clear()//清楚所有数据,没有返回值

    //5.keys()返回键名 values()返回值
    console.log(s.keys())//setIterator{1,2,3,'b','c'}
    console.log(s.values())//setIterator{1,2,3,'b','c'}

    //6.entries() 返回键值对 
    console.log(s.entries())//setIterator{[1,1],[2,2],[3,3],['b','b'],['c','c']}

    //7.forEach()
    s.forEach(function(key,value,set){
        //body...
    })

Iterator之后会有讲解

map

类似字典:用来存储不重复的key的hash结构,不同于set的是,它是用[键,值]的形式来存储数据的。
也类似与 json (javascrtip对象),json的键值只支持字符串string,虽然可以存数值,但是取出来也是string。

var obj1 = {a : 1}
var obj2 = {b : 2}
var obj3 = {}

obj3[obj1] = 1;
obj3[obj2] = 2;
//当键是对象的时候,浏览器对调用这个对象的toString方法转成字符串然后存储
//这时 用map 来存储最佳
console.log(obj3)//{[object Object]: 2}

1.创建Map

const m = new Map([
    ['a',1],
    ['b',2]
])

2.属性

    m.size;

3.方法

    /*1.set(key,value)设置键名和对应的值,如果已有则会刷新,返回map结构*/
    m.set('c',3).set('d',4) m.get(key)//取值 如果找不到返回undefind m.delete(key)//删除,返回布尔值,删除失败false m.has(key)//判断是否有某个key m.clear()//删除全部 keys()返回键名 values()返回值 entries() 返回键值对 forEach()

注意事项:

m.set(NaN,1).set(NaN,100);
//在map中 NaN是同一个键
//引用数据类型比较的是内存地址
m.set({},1).set({},2);