我試圖根據一些傳入的分頁數據更新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]]
返回形狀。任何建議非常感謝。