ES6中的set、map

ES6中的set、map

set

  • set类似于数组,但是它的值都是唯一的。
  • set可以接受一个数组或者具有interable接口的数据作为参数。
  • 向set数据加入NaN时,会被认为是同一个数据,虽然NaN是自己不等于自己的但是在set中是默认相等的。
set的某些属性和操作方法
const newSet = new set([1,'d']);
//set的属性 
newSet.size() //1 相当于数组的长度length
//set的数组操作方法
newSet.add(2) // 往set中添加数组 类似数组的push,因为add()之后会返回newSet所以可以进行链式调用
newSet.add(5).add(6);
newSet.delete(1) // 删除方法 返回布尔值代表是否删除成功
newSet.has(1) //判断set数据中是否包含某值 返回布尔值代表是否包含
newSet.clear() //清除数据 无返回值
set的循环

有四种循环
Set.prototype.keys():返回键名的遍历器
Set.prototype.values():返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员
和object的方法有点类似,keys方法、values方法、entries方法返回的都是遍历器对象。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。

let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

Map

键值对的集合,事实上,不仅仅是数组,任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构,都可以当作Map构造函数的参数。这就是说,Set和Map都可以用来生成新的 Map。
如果对同一个键进行赋值,后面的值会覆盖前面的值。

const set = new Set([
  ['foo', 1],
  ['bar', 2]
]);
const m1 = new Map(set);
m1.get('foo') // 1

const m2 = new Map([['baz', 3]]);
const m3 = new Map(m2);
m3.get('baz') // 3

map的一些属性和方法

const map = new Map();
map.set('foo', true);// 通过set设置值,同样是支持链式调用的
map.size() // 能查看长度
map.clear()// 清除 无返回值
map.get('foo') // 查看值 返回查询到的值
map.has('foo') // 是否包含某个值 返回布尔值
map.delete('foo') // 删除 返回布尔值是否删除成功
map的循环

Map.prototype.keys():返回键名的遍历器。
Map.prototype.values():返回键值的遍历器。
Map.prototype.entries():返回所有成员的遍历器。
Map.prototype.forEach():遍历 Map 的所有成员。

const map = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);

for (let key of map.keys()) {
  console.log(key);
}
// "F"
// "T"

for (let value of map.values()) {
  console.log(value);
}
// "no"
// "yes"

for (let item of map.entries()) {
  console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"

// 或者
for (let [key, value] of map.entries()) {
  console.log(key, value);
}
// "F" "no"
// "T" "yes"

// 等同于使用map.entries()
for (let [key, value] of map) {
  console.log(key, value);
}
// "F" "no"
// "T" "yes"

还有其它强大功能 如map和json和数组相互转换等可以参考下面文档
参考文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值