【发布时间】:2019-12-27 21:21:57
【问题描述】:
我想将一个 es6 嵌套的 Map 转换为一个对象。
我试过这段代码:
mapToObjectRec(m) {
let lo = {}
for(let[k,v] of m) {
if(v instanceof Map) {
lo[k] = this.mapToObjectRec(v)
}
else {
lo[k] = v
}
}
return lo
}
我想做这个功能的反面:
export declare type IElementsMap = Map<string, IElements>;
deserializeElements(json: any): IElementsMaps | any {
const elementsMap = new Map<string, IElementsMap>();
if (Array.isArray(json)) {
json.forEach(outer => {
const elementMap = new Map<string, IElements>();
outer[1].forEach(inner => {
elementMap.set(inner[0], inner[1]);
});
elementsMap.set(outer[0], elementMap);
});
return elementsMap;
}
return json;
}
我想在负载请求(发布请求)中发送转换后的数据。
【问题讨论】:
-
因为 Map 实例可以使用任何类型的键,所以将 Map 转换为普通对象并不总是可能的,至少在没有一些构造字符串属性名称(或我猜的符号)的机制的情况下并非如此。
-
另外你也没有提到你现有的代码到底出了什么问题。
-
这是在 JavaScript 还是 TypeScript 中?
-
别再迷惑自己了:
json.forEach(...)让你认为json是一个数组,但 JSON 始终是一个字符串。如果您的变量是一个元素数组,请将其命名为elems或其他名称。 -
您应该提供输入和预期输出的示例。问题的答案取决于您的输入类型。
标签: javascript dictionary ecmascript-6