TypeScript Map对象
Map 对象保存键值对,并且能够记住键的原始插入顺序。
任何值(对象或原始值)都可以作为一个键或一个值。
Map 是 ES6中引入的一种新的数据结构。
创建 Map
TypeScript 使用 Map 类型和 new 关键字来创建 Map:
let myMap = new Map();
初始化 Map,可以以数组的格式来传入键值对:
let myMap = new Map([
["key1","value1"],
["key2","value2"]
]);
Map 相关的函数与属性:
map.clear()
- 移除 Map 对象的所有键/值对。map.set()
- 设置键值对,返回该 Map 对象。map.get()
- 返回对应的值,如果不存在,则返回 undefined。map.has()
- 返回一个布尔值,用于判断 Map 中是否包含键对应的值。map.delete()
- 删除 Map 中的元素,删除成功返回 true,失败返回 false。map.size
- 返回 Map 对象键/值对的数量。map.keys()
- 返回一个 Iterator 对象,包含了Map 对象中每个元素的键。map.values()
- 返回一个新的 Iterator 对象,包含了 Map 对象中每个元素的值。map.entries()
- 返回一个新的 Iterator 对象,包含了 Map 对象中所有键/值对。
实例
let myMap = new Map([
["key1", "value1"],
["key2", "value2"]
]);
console.log(myMap);
//设置键值对,返回该 Map 对象
myMap.set("key3","value3");
console.log(myMap)
//返回对应的值,如果不存在,则返回 undefined。
console.log(myMap.get("key3")) //value3
console.log(myMap.get("key4")) //undefined
//返回一个布尔值,用于判断 Map 中是否包含键对应的值。
console.log(myMap.has("key3")); //true
console.log(myMap.has("key4")); //false
//删除 Map 中的元素,删除成功返回 true,失败返回 false。
console.log(myMap.delete("key3"));//true
console.log(myMap.delete("key4"));//false
//返回 Map 对象键/值对的数量。
console.log(myMap.size);//2
//返回一个 Iterator 对象,包含了Map 对象中每个元素的键。
console.log(myMap.keys()) //MapIterator {"key1", "key2"}
//返回一个新的 Iterator 对象,包含了 Map 对象中每个元素的值。
console.log(myMap.values())//MapIterator {"value1", "value2"}
console.log(myMap.entries())//MapIterator {"key1" => "value1", "key2" => "value2"}
//移除 Map 对象的所有键/值对
myMap.clear();
console.log(myMap);
使用 es6 编译
tsc --target es6 test.ts
迭代 Map
Map 对象中的元素是按顺序插入的,我们可以迭代 Map 对象,每一次迭代返回 [key,value]数组。
TypeScript使用 for...of
来实现迭代:
实例
// 迭代 Map 中的 key
for (let key of myMap.keys()) {
console.log(key); //key1 //key2
}
// 迭代 Map 中的 value
for (let value of myMap.values()) {
console.log(value); //value1 //value2
}
// 迭代 Map 中的 key => value
for (let entry of myMap.entries()) {
console.log(entry[0], entry[1]); //key1 value1 //key2 value2
}
// 使用对象解析
for (let [key, value] of myMap) {
console.log(key, value); //key1 value1 //key2 value2
}
同样使用 es6 编译