我正在尝试使用Immutable的.map()来迭代List()
个“段”。
每个细分可能会跨越多天,如果是这样,我希望将此细分细分为多个细分,每个细分仅跨越一天。
我似乎有基本的逻辑工作:
const segmentedList = nonSegmentedList.map((segment) => {
if (spansMultipleDays(segment)) {
return segmentByDay(segment) // returns a list
} else {
return segment
}
})
return segmentedList
我的问题是.map
的返回将返回一个段列表,并将它们填入一个segmentedList
列表项中。例如,假设segment1和segment3跨越一天,而“segment2”跨越三天。
我的返回值看起来像这样:
[
{segment1},
[{segment2a}, {segment2b}, {segment2c}],
{segment3}
]
然而,这是所希望的:
[
{segment1},
{segment2a},
{segment2b},
{segment2c},
{segment3}
]
Immutable's flatMap函数类似于我正在寻找的声音,但在上面使用flatMap的代码片段中替换.map会产生相同的结果。
答案 0 :(得分:1)
一个选项是简单地flatten()
集合,然后映射它。
const collection = Immutable.fromJS([1, 2, [3, 4, 5], 6])
collection.flatten().map(item => console.log(item))
<script src="https://unpkg.com/immutable"></script>