有两种可能的构造函数:
new go.Map()
, 用于JavaScript
new go.Map<K, V>()
用于TypeScript
在TypeScript中,两个可选的通用参数描述了此Map可能包含的key的类型和value的类型
例如,表达式:
// TypeScript:
new go.Map<string, go.Point>()
生成一个Map,该Map的key必须是一个字符串,并且其关联值必须是 Point
要添加的keys/values的可选集合,或 { key: ..., value: ... } 对象的数组。请注意,key/value对是具有"key" 和 "value"属性的对象,而不是长度为2的数组
此只读属性是Map中的关联数
获取一个对象,该对象可用于迭代Map的键值对。典型用法:
var it = aMap.iterator;
while (it.next()) {
console.log("the key: " + it.key + " has value: " + it.value);
}
获取一个对象,该对象可用于迭代Map的key,典型用法:
var it = aMap.iteratorKeys;
while (it.next()) {
console.log("key: " + it.value);
}
获取一个可用于迭代Map值的对象,典型用法:
var it = aMap.iteratorValues;
while (it.next()) {
console.log("value: " + it.value);
}
此只读属性是Map中的关联数
向Map添加键值关系, 或替换key中与key相关联的值(如果key已经存在于Map中)
迭代集合时,请注意不要调用此方法
用于将值存储在Map中的key
与key关联的要添加到Map中的值
修改后的Map.
如果对集合中所有的项调用给定函数都为true,则为true
在集合中的每个键值对上调用给定的函数,一旦返回false时,将立即返回false,否则返回true。对于空集合它返回true
函数的参数是同时具有"key" 和 "value" 属性的对象。此函数不得有任何副作用
如果所有函数调用为true,则为true,否则为false
如果对任意集合的项目调用给定函数为true,则为true
在集合中的每个键值对上调用给定函数,一旦调用返回true,则返回true,否则返回false。对于空集合,它返回false
函数的参数是同时具有"key" 和 "value" 属性的对象。此函数不得有任何副作用
如果任何给定函数调用为true,则为true,否则为false
清除Map, 删除所有键值关系。这会将 count 设置为0
迭代集合时,请注意不要调用此方法
返回给定key是否在此Map中
在Map中查找的key
key是否包含在Map中
对Map进行浅拷贝,key及其值不会被复制,因此,如果它们是对象,则它们可能会继续与原始Map共享
具有相同条目副本的新Map
从Map中删除key(如果找到)
迭代集合时,请注意不要调用此方法
插入key
如果找到并删除了key,则为true,否则为false
在集合中的每个键值对上调用给定的函数
函数的参数是同时具有"key" 和 "value" 属性的对象。此函数不得有任何副作用
Map自身
返回集合中的第一个键值对。如果不存在,则返回null
如果集合中没有任何项目,则返回null
返回与key关联的值
在Map中查找的key
与给定key关联的值,如果Map中不存在,则返回null
返回与key关联的值
在Map中查找的key
与给定key关联的值,如果Map中不存在,则返回null
返回给定key是否在此Map中
在Map中查找的key
key是否包含在Map中
从Map中删除key(如果找到)
迭代集合时,请注意不要调用此方法
删除的key
如果找到并删除了key,则为true,否则为false
将键值关联添加到Map,如果key已存在于Map中,则替换与key关联的值
迭代集合时,请注意不要调用此方法
用于在Map中存储值的key
与key关联的要添加到Map中的值
修改后的Map
根据此Map的内容产生一个键值对对象的JavaScript数组
数组形式的Map的副本,每个元素都是具有 'key' 和 'value' 属性的对象
注意: 在2.0版本中 constructor 参数发生了变化。 Map 现在可以选择接受一个集合,并且只检查TypeScript中的类型
key/value对的无序可迭代集合,不能包含相同key的两个实例。 在TypeScript中,它是一个通用类,在编译时强制执行key的类型和value的类型
创建一个Map:
var map = new go.Map(); // In TypeScript: new go.Map<string, number>(); map.add("one", 1); map.add("two", 2); map.add("three", 3); // now map.count === 3 // and map.getValue("two") === 2 // and map.contains("zero") === false
你可以遍历Map中的key/value对:
var it = aMap.iterator; while (it.next()) { console.log(it.key + ": " + it.value); }
或者:
aMap.each(function(kvp) { console.log(kvp.key + ": " + kvp.value); });
但是请注意,key/value对之间没有保证的顺序
调用 toKeySet 以获取一个只读 Set ,其中包含Map的所有keys。 对该Set进行迭代将产生作为Map中的Key的值
尽管未精确实现EcmaScript 6 Map 类的功能和语义, 但 GoJS Map 类具有以下方法和属性的同义词:
现在,构造函数接受一个可选的Iterable 或 Array参数,该参数为新Map提供了初始条目
请注意,GoJS迭代与ES6迭代完全不同,因此尚未使功能具有某种程度的兼容性。这些集合类是在ES6集合类被提出之前在GoJS中定义的。