【发布时间】:2020-08-07 00:43:30
【问题描述】:
我正在尝试展平嵌套地图列表,以便输出是地图列表,然后可以将其插入数据库表中。嵌套地图可以包含地图列表。一般来说,嵌套地图的最小示例是这样的:
%{
a: "a",
b: "b",
c: [
%{
d: "d1",
e: [%{f: "f1", g: "g1"}],
h: "h1",
i: "i1"
},
%{
d: "d2",
e: [%{f: "f2", g: "g2"}],
h: "h2",
i: "i2"
}
]
}
我要寻找的输出是:
[
%{f: "f1", g: "g1", d: "d1", h: "h1", i: "i1", b: "b", a: "a"},
%{f: "f2", g: "g2", d: "d2", h: "h2", i: "i2", b: "b", a: "a"}
]
列表的长度等于“终端”映射的数量(即本例中的f 键)。此外,您会注意到在发生嵌套的位置,c 和 e,这些键不是必需的,因此被删除。
我试图递归映射键,但我遇到的问题是输出始终是父映射中键的长度。
任何有关如何解决此问题的帮助或想法将不胜感激。
谢谢!
【问题讨论】:
-
如果嵌套的map和上一层的map有相同的key怎么办?地图不能有重复的键。
-
所有键都是唯一的,所以我不必考虑这一点。
-
'a'是一个列表,c的值是一个列表;为什么你希望后者扩大而第一个不扩大? -
我想我对 Elixir 中的单引号和双引号感到困惑。
'a'实际上是一个字符串而不是字符列表,而c是一个列表。所以我只是在扩展列表。我已经编辑了问题以澄清这一点。
标签: functional-programming elixir