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 | 方法和说明 |
---|---|
1 | Map.prototype.clear() 从Map对象中删除所有键/值对。 |
2 | Map.prototype.delete(key) 删除与该键关联的所有值,并返回Map.prototype.has(key)先前应返回的值。Map.prototype.has(key)之后将返回false。 |
3 | Map.prototype.entries() 返回一个新的Iterator对象,该对象包含按插入顺序的Map对象中每个元素的[key,value]数组。 |
4 | Map.prototype.forEach(callbackFn[,thisArg]) 按插入顺序,对Map对象中存在的每个键值对调用一次callbackFn。如果为forEach提供了thisArg参数,则该参数将用作每个回调的“ this”值。 |
5 | Map.prototype.keys() 返回一个新的Iterator对象,该对象按插入顺序包含Map对象中每个元素的键。 |
6 | Map.prototype.values() 返回一个新的Iterator对象,该对象包含按插入顺序的Map对象中每个元素的 [key,value] 数组。 |
集合
集合是ES6数据结构。它类似于数组,但不能包含重复项。换句话说,它使您可以存储唯一值。集合支持原始值和对象引用。
就像地图一样,集合也是有序的,即元素按其插入顺序进行迭代。
属性
Sr.No | 属性和说明 |
---|---|
1 | Set.prototype.size 返回Set对象中值的数量。 |
Set 方法
Sr.No | 方法和说明 |
---|---|
1 | Set.prototype.add(value) 将具有给定值的新元素追加到Set对象。返回Set对象。 |
2 | Set.prototype.clear() 从Set对象中删除所有元素。 |
3 | Set.prototype.delete(value) 删除与value关联的元素。 |
4 | Set.prototype.entries() 返回一个新的Iterator对象,该对象按插入顺序包含Set对象中每个元素的 [value,value] 数组。这与Map对象保持相似,因此此处每个条目的键和值都具有相同的值。 |
5 | Set.prototype.forEach(callbackFn[,thisArg]) 调用callbackFn一次存在于地图对象中的每个键-值对,在插入顺序。如果为forEach提供了thisArg参数,它将用作每个回调的'this'值。 |
6 | Set.prototype.has(value) 返回一个布尔值,该值声明Set对象中是否存在具有给定值的元素。 |
7 | SET.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}