js高阶——set和map结构

数组和对象本身很重

        es6专门新增了两个数据结构,专门用来存储数据,结构很轻,处理数据速度很快。

        set map仅仅用于前端本地数据存储。

  set  

        类似数组,可以看做是数组的子集,成员不能重复。

        set结构的内容唯一性可以用来判断NaN

        set结构简单,遍历速度非常快。

const s = new Set();

const arr = [1,2,2,3,3]
const arr2 = [...new Set(arr)];

        set结构的属性:

                .size 可以返回set结构的长度。

        set结构的方法:

                add(value) 新增

                delete(value) 移除

                has(value) 判断是否包含

                clear() 清空数据。

        set结构的遍历器:

                keys()

                values()

                entries()

                forEach()

        用for of 循环可以用来做遍历器接口的遍历:

for (let item of set) {
      console.log(item)
    }

        直接遍历set,默认是遍历其set.keys()这个接口。对于set结构,其key和value是相同的,所以,keys和values也是相同的。

	for (let item of set.keys()) {
      console.log(item)
    }
	for (let item of set.values()) {
      console.log(item)
    }

        entries接口提供复合结构:

for (let item of set.entries()) {
      console.log(item)//[key,value]
    }

s.forEach(function (key, value, set) {
      console.log(a, b, c);//1,1,set
    })

        forEach回调函数的参数:因为set结构没有key,所以,访问key实际上返回的是value。

set结构可以用来做数组去重复:

	let arr = [1,2,3,4,5,3,4,5];
	let arr2 = [...new Set(arr)];

map

        类似对象,可以看做是对象的子集

map结构的属性:

        size 返回map结构的长度。

map结构的方法:

        set(key,value)

        get(key)

        has(key)

        delete(key)

        clear()

map结构的遍历器方法:

        keys()

        values()

        entries()

        forEach()

const 张三 = {name: '张三'};
const 李四 = {name: '李四'};

const obj = {
  张三 :1 //这个张三和const 张三不是一个东西,这个张三相当于'张三'
        }
const m = new Map();
m.set('a',1);
m.set(张三:2);
console.log(m.get(张三));

const 张三 = new Map();
张三.set = ('姓名':'张三')
张三.set = ('年龄':'18')

const 学生信息 = new Map();
学生信息.set(张三,{chengji:60,xuehao:12313});
 console.log(学生信息)
 const arr = new Map([
     ['a',1],
     ['b',2],
     ['c',3]
   ]
);

for(let item of arr.keys()//value()){
    console.log(item)
        }
        
m.forEach(function(value,key){
    console.log(value,key);
        })

 什么情况下使用set和map

        1、数据量比较大时。

        2、当我们需要数组成员不重复时,可以使用set替代数组

        3、当我们需要为程序中的一些对象存储数据时,可以使用map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值