【发布时间】:2017-07-18 02:33:25
【问题描述】:
我正在尝试根据一些传入的分页数据更新Immutable.Map,在我的数据结构中构建顶级索引。
传入的数据如下所示:
[
{
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]] 返回形状。非常感谢任何建议。
【问题讨论】: