学习ES6(二十一)-- Collections 映射和集合 详解

ES6引入了两个新的数据结构:映射和集合

  • 映射 -此数据结构允许将键映射到值。

  •  -集类似于数组。但是,集合不鼓励重复

Map对象

Map对象是一个简单的键/值对。映射中的键和值可以是原始的或对象的。

语法: new Map([iterable])

参数iterable表示其元素由键/值对组成的任何可迭代对象。Map对象是有序的,即,Map对象按其插入顺序遍历元素。

Map 属性

Sr.No属性和说明
1 Map.prototype.size

此属性返回Map对象中键/值对的数量。

Map对象的基本操作

set()函数设置Map对象中键的值。set()函数采用两个参数,即键及其值。此函数返回Map对象。

has()函数返回一个布尔值,该布尔值指示是否在Map对象中找到指定的键。该功能以键作为参数。

GET()函数用于检索对应于指定键的值。

var map = new Map(); 
map.set(1,true); 
console.log(map.has("1")); //false 
map.set("1",true); 
console.log(map.has("1")); //true
var map = new Map(); 
map.set('name','Tutorial Point'); 
map.get('name'); // Tutorial point

注意 -如果指定的键在映射中不存在,则get()函数返回undefined。如果键的值已经存在于映射中,则set()将替换它的值。

Map 方法

Sr.No方法和说明
1Map.prototype.clear()

从Map对象中删除所有键/值对。

2Map.prototype.delete(key)

删除与该键关联的所有值,并返回Map.prototype.has(key)先前应返回的值。Map.prototype.has(key)之后将返回false。

3Map.prototype.entries()

返回一个新的Iterator对象,该对象包含按插入顺序的Map对象中每个元素的[key,value]数组。

4Map.prototype.forEach(callbackFn[,thisArg])

按插入顺序,对Map对象中存在的每个键值对调用一次callbackFn。如果为forEach提供了thisArg参数,则该参数将用作每个回调的“ this”值。

5Map.prototype.keys()

返回一个新的Iterator对象,该对象按插入顺序包含Map对象中每个元素的

6Map.prototype.values()

返回一个新的Iterator对象,对象包含按插入顺序的Map对象中每个元素 [key,value] 数组

集合

集合是ES6数据结构。它类似于数组,但不能包含重复项。换句话说,它使您可以存储唯一值。集合支持原始值和对象引用。

就像地图一样,集合也是有序的,即元素按其插入顺序进行迭代。

属性

Sr.No属性和说明
1Set.prototype.size

返回Set对象中值的数量。

 

Set 方法

Sr.No方法和说明
1Set.prototype.add(value)

将具有给定值的新元素追加到Set对象。返回Set对象。

2Set.prototype.clear()

从Set对象中删除所有元素。

3Set.prototype.delete(value)

删除与value关联的元素。

4Set.prototype.entries()

返回一个新的Iterator对象,该对象按插入顺序包含Set对象中每个元素 [value,value] 数组。这与Map对象保持相似,因此此处每个条目的键和值都具有相同的值。

5Set.prototype.forEach(callbackFn[,thisArg])

调用callbackFn一次存在于地图对象中的每个键-值对,在插入顺序。如果为forEach提供了thisArg参数,它将用作每个回调的'this'值。

6Set.prototype.has(value)

返回一个布尔值,该值声明Set对象中是否存在具有给定值的元素。

7SET.prototype.values()

返回一个新的Iterator对象,该对象按插入顺序包含Set对象中每个元素的

 

迭代器

迭代器是一个对象,它允许一次访问一组对象。set和map都有返回迭代器的方法。

迭代器是具有next()方法的对象。调用next()方法时,它将返回具有'value''done'属性的对象。'done'是布尔值,在读取集合中的所有项目后将返回true

var  set = new Set(['a','b','c','d','e']);  
var iterator = set.entries(); 
console.log(iterator.next())//输出:{ value: [ 'a', 'a' ], done: false } 
var  set = new Set(['a','b','c','d','e']);  
var iterator = set.values(); 
console.log(iterator.next()); //输出:{ value: 'a', done: false }  
var  set = new Set(['a','b','c','d','e']);  
var iterator = set.keys(); 
console.log(iterator.next()); //输出:{ value: 'a', done: false }  
var map = new Map([[1,'one'],[2,'two'],[3,'three']]); 
var iterator = map.entries(); 
console.log(iterator.next());  //输出:{ value: [ 1, 'one' ], done: false } 
var map = new Map([[1,'one'],[2,'two'],[3,'three']]); 
var iterator = map.values(); 
console.log(iterator.next());  //输出:{value: "one", done: false} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值