首页 > 解决方案 > 如何从 Typescript 映射中转换 JSON 对象?

问题描述

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

 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#,在那里我可以使用字典,然后从中“选择”任何我想要的东西。我只是不知道语法,但基本上我想要字典的行为,然后能够匿名描述我想在提交方法上调用它们的键和值。

标签: typescriptdictionaryangular7anonymous-types

解决方案


Map.prototype.forEach()接受一个使用三个参数调用的回调:值、键和整体Map。而不是x => ...你应该做(v, k) => ...的,如:

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

希望有帮助。祝你好运。


推荐阅读