【问题标题】:How do you cast a JSON object from a Typescript Map?如何从 Typescript 映射中转换 JSON 对象?
【发布时间】:2019-01-26 00:01:51
【问题描述】:

所以我在一个组件中有一个这样的地图。

 reconciled = new Map<number, boolean>();

我订阅了它用一个粗箭头函数改变,在他们的“改变”事件上连接了几个材料复选框:

changed = (tranId: number, checked: boolean) => this.reconciled.set(tranId, checked);

我喜欢我将它连接到一个事件,如果有一个数字作为键,它会将值更新为 true 到 false(如果存在),否则添加一个新条目。但是,我想将它作为 JSON 传递给服务,以替换我想要的集合名称。到目前为止,我有这个:

const mp: any[] = [];
this.reconciled.forEach(x => mp.push({transactionID: x, reconciled: x}));

显然,这是两次获得相同的布尔值。但是我看不到传入的映射对象的“键”。我更习惯于 C#,我可以在其中使用字典,然后从中“选择”任何我想要的东西。我只是不知道语法,但基本上我想要字典的行为,然后能够匿名描述我想在提交方法上调用它们的键和值。

【问题讨论】:

  • Map.prototype.forEach() 接受一个用three arguments 调用的回调:值、键和整个Map。而不是x =&gt; ... 你应该做(v, k) =&gt; ...
  • @jcalz 谢谢,我知道这很简单。如果我在 Visual Studio Code(facepalm) 中将鼠标悬停在 foreach 上更长时间就好了。

标签: typescript dictionary angular7 anonymous-types


【解决方案1】:

Map.prototype.forEach() 接受一个用three arguments 调用的回调:值、键和整个Map。你应该使用(v, k) =&gt; ... 而不是x =&gt; ...,如:

const mp: any[] = [];
this.reconciled.forEach((v, k) => mp.push({transactionID: k, reconciled: v}));

希望对您有所帮助。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2021-03-21
    • 2016-02-18
    • 2014-02-10
    • 2019-11-24
    • 2021-07-27
    相关资源
    最近更新 更多