Map 可以将键作为自定义类型吗?

开V

我有自定义接口类型:

export interface IDictionary {
    id: number;
    dbVersion: number;
    code: string;
    tableName: string;
    name: Name;
    shortName: ShortName;
    active: boolean;
    restricted: boolean;
    hierarchy: boolean;
    metadata: string;
    rights: any[];
}

我尝试构建 Map():

 dataMap = new Map<IDictionary, IDictionary[]>([
    [{ name: { ru: "Root1"}} as IDictionary, [{ name: { ru: "Papa"}} as IDictionary]]
  ]);

可以key用作IDictionary类型吗?

然后我尝试通过键获取值:

this.dataMap.get(node);

节点是对象的地方:

{ name: { ru: "Root1"}}

我应该得到: [{ name: { ru: "Papa"}}]

梅迪特·特鲁卡比鲁利

在 JavaScript(以及作为扩展,TypeScript)中,没有两个对象是相等的,除非它们引用同一个对象。如果您创建一个新对象,它不会认为它与任何现有对象相等。

因为 Maps 在查找元素时考虑了这种相等性,如果您存储一个以对象为键的值,则只有再次将完全相同的对象引用作为键传入,才能再次获取该值:

interface Name {
  ru: string
}
interface ShortName extends Name {}
interface IDictionary {
  id?: number;
  dbVersion?: number;
  code?: string;
  tableName?: string;
  name: Name;
  shortName?: ShortName;
  active?: boolean;
  restricted?: boolean;
  hierarchy?: boolean;
  metadata?: string;
  rights?: any[];
}

const node = { name: { ru: 'Root1' } }

const dataMap = new Map<IDictionary, IDictionary[]>([[
  node, [{ name: { ru: 'Papa' } }]
]])

console.log(dataMap.get({ name: { ru: 'Root1' } })) // undefined
console.log(dataMap.get(node))                      // [ { name: { ru: 'Papa' } } ]

学分

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用自定义结构作为键类型访问std :: map会导致奇怪的行为

来自分类Dev

可以设置一种自定义异常类型,以通过std :: map :: at方法抛出该异常吗?

来自分类Dev

将Java Map转换为自定义键=值字符串

来自分类Dev

使用自定义比较器可以安全地实现std :: map异常吗?

来自分类Dev

MongoDB Map Reduce:自动创建的索引名称太长,可以自定义吗?

来自分类Dev

wordpress高级自定义字段google map api键

来自分类Dev

wordpress高级自定义字段google map api键

来自分类Dev

是否可以将某些Google Map街道颜色自定义为红色或蓝色?

来自分类Dev

Scala:以简单的自定义类型实现map和withFilter

来自分类Dev

不同自定义类型的unordered_map

来自分类Dev

Scala:为什么可变Map和不可变Map在作为键的同一个自定义类实例上有不同的结果?

来自分类Dev

C++ 将 struct 作为 std::map 的键复制到 std::map 吗?

来自分类Dev

将Map的键/值对作为对象访问

来自分类Dev

Angular Google Map的自定义样式

来自分类Dev

Android Google Map自定义标记

来自分类Dev

iOS Google Map自定义标记

来自分类Dev

Android Google Map自定义标记

来自分类Dev

iOS Google Map自定义标记

来自分类Dev

使用std :: map时,我应该重载operator ==作为键类型吗?

来自分类Dev

std :: map中的自定义键,重载<运算符

来自分类Dev

带字符串键和自定义值字段的std :: map

来自分类Dev

可以将ActorRef用作Map键

来自分类Dev

可以将ActorRef用作Map键

来自分类Dev

具有自定义值类型的std :: unordered_map,运算符[]

来自分类Dev

从具有自定义类型的c ++中的std :: map获取值

来自分类Dev

从具有自定义类型的c ++中的std :: map获取值

来自分类Dev

Map <键,列表/设置<键定义类型的对象>>

来自分类Dev

将Google Map片段嵌套在自定义片段中

来自分类Dev

使用map(purrr)将arugments传递给R自定义函数

Related 相关文章

  1. 1

    使用自定义结构作为键类型访问std :: map会导致奇怪的行为

  2. 2

    可以设置一种自定义异常类型,以通过std :: map :: at方法抛出该异常吗?

  3. 3

    将Java Map转换为自定义键=值字符串

  4. 4

    使用自定义比较器可以安全地实现std :: map异常吗?

  5. 5

    MongoDB Map Reduce:自动创建的索引名称太长,可以自定义吗?

  6. 6

    wordpress高级自定义字段google map api键

  7. 7

    wordpress高级自定义字段google map api键

  8. 8

    是否可以将某些Google Map街道颜色自定义为红色或蓝色?

  9. 9

    Scala:以简单的自定义类型实现map和withFilter

  10. 10

    不同自定义类型的unordered_map

  11. 11

    Scala:为什么可变Map和不可变Map在作为键的同一个自定义类实例上有不同的结果?

  12. 12

    C++ 将 struct 作为 std::map 的键复制到 std::map 吗?

  13. 13

    将Map的键/值对作为对象访问

  14. 14

    Angular Google Map的自定义样式

  15. 15

    Android Google Map自定义标记

  16. 16

    iOS Google Map自定义标记

  17. 17

    Android Google Map自定义标记

  18. 18

    iOS Google Map自定义标记

  19. 19

    使用std :: map时,我应该重载operator ==作为键类型吗?

  20. 20

    std :: map中的自定义键,重载<运算符

  21. 21

    带字符串键和自定义值字段的std :: map

  22. 22

    可以将ActorRef用作Map键

  23. 23

    可以将ActorRef用作Map键

  24. 24

    具有自定义值类型的std :: unordered_map,运算符[]

  25. 25

    从具有自定义类型的c ++中的std :: map获取值

  26. 26

    从具有自定义类型的c ++中的std :: map获取值

  27. 27

    Map <键,列表/设置<键定义类型的对象>>

  28. 28

    将Google Map片段嵌套在自定义片段中

  29. 29

    使用map(purrr)将arugments传递给R自定义函数

热门标签

归档