Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Map<K, V>

Hierarchy

  • Map

注意: 在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中定义的。

Type parameters

  • K

  • V

Index

Constructors

constructor

  • new Map(coll?: Iterable<KeyValuePair<K, V>> | Array<KeyValuePair<K, V>> | Map<K, V>): Map
  • 有两种可能的构造函数:

    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

    Parameters

    • Optional coll: Iterable<KeyValuePair<K, V>> | Array<KeyValuePair<K, V>> | Map<K, V>

      要添加的keys/values的可选集合,或 { key: ..., value: ... } 对象的数组。请注意,key/value对是具有"key" 和 "value"属性的对象,而不是长度为2的数组

    Returns Map

Properties

Read-only count : number

  • 此只读属性是Map中的关联数

Read-only iterator : IMapIterator<K, V>

  • 获取一个对象,该对象可用于迭代Map的键值对。典型用法:

      var it = aMap.iterator;
      while (it.next()) {
        console.log("the key: " + it.key + " has value: " + it.value);
      }

Read-only iteratorKeys : Iterator<K>

  • 获取一个对象,该对象可用于迭代Map的key,典型用法:

      var it = aMap.iteratorKeys;
      while (it.next()) {
        console.log("key: " + it.value);
      }
    since

    1.4

Read-only iteratorValues : Iterator<V>

  • 获取一个可用于迭代Map值的对象,典型用法:

      var it = aMap.iteratorValues;
      while (it.next()) {
        console.log("value: " + it.value);
      }
    since

    1.4

Read-only size : number

  • 此只读属性是Map中的关联数

Methods

add

  • add(key: K, val: V): Map<K, V>
  • 向Map添加键值关系, 或替换key中与key相关联的值(如果key已经存在于Map中)

    迭代集合时,请注意不要调用此方法

    Parameters

    • key: K

      用于将值存储在Map中的key

    • val: V

      与key关联的要添加到Map中的值

    Returns Map<K, V>

    修改后的Map.

addAll

  • addAll(coll: Iterable<KeyValuePair<K, V>> | Array<KeyValuePair<K, V>> | Map<K, V>): Map<K, V>
  • 将另一个Map的所有键值对添加到此Map。 如果此Map中已经存在key,则其值将替换为给定Map中的相应值

    迭代集合时,请注意不要调用此方法

    Parameters

    • coll: Iterable<KeyValuePair<K, V>> | Array<KeyValuePair<K, V>> | Map<K, V>

      要添加的keys/values的集合或 { key: ..., value: ... } 对象的数组

    Returns Map<K, V>

    修改后的Map.

Virtual all

  • all(pred: function(a: KeyValuePair<K, V>): boolean): boolean
  • 如果对集合中所有的项调用给定函数都为true,则为true

    在集合中的每个键值对上调用给定的函数,一旦返回false时,将立即返回false,否则返回true。对于空集合它返回true

    since

    1.4

    Parameters

    • pred: function(a: KeyValuePair<K, V>): boolean

      函数的参数是同时具有"key" 和 "value" 属性的对象。此函数不得有任何副作用

    Returns boolean

    如果所有函数调用为true,则为true,否则为false

Virtual any

  • any(pred: function(a: KeyValuePair<K, V>): boolean): boolean
  • 如果对任意集合的项目调用给定函数为true,则为true

    在集合中的每个键值对上调用给定函数,一旦调用返回true,则返回true,否则返回false。对于空集合,它返回false

    since

    1.4

    Parameters

    • pred: function(a: KeyValuePair<K, V>): boolean

      函数的参数是同时具有"key" 和 "value" 属性的对象。此函数不得有任何副作用

    Returns boolean

    如果任何给定函数调用为true,则为true,否则为false

clear

  • clear(): void
  • 清除Map, 删除所有键值关系。这会将 count 设置为0

    迭代集合时,请注意不要调用此方法

    Returns void

contains

  • contains(key: K): boolean
  • 返回给定key是否在此Map中

    Parameters

    • key: K

      在Map中查找的key

    Returns boolean

    key是否包含在Map中

Virtual copy

  • copy(): Map<K, V>
  • 对Map进行浅拷贝,key及其值不会被复制,因此,如果它们是对象,则它们可能会继续与原始Map共享

    Returns Map<K, V>

    具有相同条目副本的新Map

delete

  • delete(key: K): boolean
  • 从Map中删除key(如果找到)

    迭代集合时,请注意不要调用此方法

    Parameters

    • key: K

      插入key

    Returns boolean

    如果找到并删除了key,则为true,否则为false

Virtual each

  • each(func: function(a: KeyValuePair<K, V>): void): Map<K, V>
  • 在集合中的每个键值对上调用给定的函数

    since

    1.4

    Parameters

    • func: function(a: KeyValuePair<K, V>): void

      函数的参数是同时具有"key" 和 "value" 属性的对象。此函数不得有任何副作用

    Returns Map<K, V>

    Map自身

first

  • first(): KeyValuePair<K, V>
  • 返回集合中的第一个键值对。如果不存在,则返回null

    since

    1.4

    Returns KeyValuePair<K, V>

    如果集合中没有任何项目,则返回null

get

  • get(key: K): V | null
  • 返回与key关联的值

    Parameters

    • key: K

      在Map中查找的key

    Returns V | null

    与给定key关联的值,如果Map中不存在,则返回null

getValue

  • getValue(key: K): V | null
  • 返回与key关联的值

    Parameters

    • key: K

      在Map中查找的key

    Returns V | null

    与给定key关联的值,如果Map中不存在,则返回null

has

  • has(key: K): boolean
  • 返回给定key是否在此Map中

    Parameters

    • key: K

      在Map中查找的key

    Returns boolean

    key是否包含在Map中

remove

  • remove(key: K): boolean
  • 从Map中删除key(如果找到)

    迭代集合时,请注意不要调用此方法

    Parameters

    • key: K

      删除的key

    Returns boolean

    如果找到并删除了key,则为true,否则为false

set

  • set(key: K, val: V): Map<K, V>
  • 将键值关联添加到Map,如果key已存在于Map中,则替换与key关联的值

    迭代集合时,请注意不要调用此方法

    Parameters

    • key: K

      用于在Map中存储值的key

    • val: V

      与key关联的要添加到Map中的值

    Returns Map<K, V>

    修改后的Map

toArray

  • toArray(): Array<KeyValuePair<K, V>>
  • 根据此Map的内容产生一个键值对对象的JavaScript数组

    Returns Array<KeyValuePair<K, V>>

    数组形式的Map的副本,每个元素都是具有 'key' 和 'value' 属性的对象

toKeySet

  • toKeySet(): Set<K>
  • 产生一个 Set 该Set提供对该Map的key的只读视图,key集合未复制

    Returns Set<K>