Set和Map基本用法

一、Set

Set本身是一种构造函数,用来生成Set数据结构

var s = new Set();
var arr = [1,2,1,3,4,3,2,5,5];
arr.map(x => s.add(x));// 使用add方法向Set增加数据
for(let i of s){
  console.log(i)
}
1
2
3
4
5//=》自带去重功能

var arr = new Set([1,2,3,4,5,'5',6,7,7,7])
arr.size//=》8,Set中5和'5'是不同的值
arr.add(8)//=》添加8这个值
arr.delet(8)//=》删除8
arr.has(8)//=》判断是否存在8,返回值为boolean
arr.clear()//=》清理所有成员
Array.from可以将Set结构转为数组
var items = Array.from(arr)
items//=》 [1, 2, 3, 4, 5, "5", 6, 7, 8]

二、Map

JavaScript是键值对的集合,通常只能用字符串作为键,这样就有了很大的限制,Map解决了这一问题

// 例1:
var m = new Map();
o = { x: 'asdasd' }; //=》{x: "asdasd"}

m.set(o, '内容')//使用o这个对象作为键
m.get(o);//=》"内容"

//例2:值一样的两个实例被认为是两个键
var m1 = new Map();

var k1 = ['asd'];
var k2 = ['asd'];

m1.set(k1, 100);
m1.set(k2, 200);

m1.get(k1);//=》100
m1.get(k2);//=》200

//例3:
var m = new Map([["name", "lx"], ["age", 50]]);

m.size//=》2
m.has('lx');//=》false
m.has('name');//=》true

m.get('name');//=》"lx"
m.get('age')//=》50

m.delete('name');//=》true  现在删除‘name’
m.has('name');//=》false

m.set(undefined, 'undefined');
m.get(undefined);//=>'undefined'

m.set(222, '200');
m.get(222);//=>' 200  '

var foo = function () { console.log('函数') }
m.set(foo, '函数');
m.get(foo)//=>'函数'
//Map提供的遍历器keys() / values() / entries()
for (let key of m.keys()) {

  console.log(key)//age undefined 222返回键名

}

//-------------------------------------------------
for (let val of m.values()) {
  console.log(val)//返回键值
}
50
undefined
200
函数
//---------------------------------------------------
for (let item of m.entries()) {
  console.log('key:s%,val:s%', item[0], item[1])//返回整项
}
key: s %, val: s % age 50
key: s %, val: s % undefined undefined
key: s %, val: s % 222 200
key: s %, val: s % ƒ(){ console.log('函数') } 函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值