我正在尝试使用 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 产生了相同的结果。
最佳答案
一个选择是简单地 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>
关于javascript - Immutable.js .map 在一次迭代中返回多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46331215/