我试图根据一些传入的分页数据更新Immutable.Map
,在我的数据结构中构建顶级索引。更新ImmutableJS映射
传入的数据是这样的:
[
{
identifier: ADFASD,
tags: [ tag1, tag2]
}, {
identifier: GGHYX,
tags: [ tag2, tag3]
},
]
所需的结果
{
taggedArticleList: {
tag1: [ADFASD],
tag2: [ADFASD, GGHYX],
tag3: [GGHYX],
}
}
目前的JS函数,我重构出(的作品):
let taggedArticleList = {}
action.data.response.results.map((article) => {
article.tags.map((tag) => {
let key = taggedArticleList[tag] || (taggedArticleList[tag] = [];
key.article.push(article.identifier)
});
});
return taggedArticleList
而且我目前的ImmutableJS尝试:
.update('taggedArticleList', taggedArticleList =>
Immutable.Map(
Immutable.fromJS(action.data.response.results).map(
article =>
article.get('tags').map(
tag =>
[
tag,
taggedArticleList.has('tag')
? taggedArticleList.get(tag).push(article.get('identifier'))
: Immutable.List().push(article.get('identifier'))
]
)
)))
我的方法是映射传入的数据“文章”,然后映射通过他们的“标签”,并检查现有的taggedArticleList
是否具有密钥 - 如果它确实向其推送新的标识符,否则创建一个新Immutable.List
然后将其推入。我试图劫持构造函数Immutable.Map
,它接受[key, value]
类型结构作为创建自身的默认方式。
正在返回的数据结构给我一个奇怪的tag<List>
键和List[tag, List[identifier]]
返回形状。任何建议非常感谢。