受信データのページングに基づいて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]]
の返りの形を与えています。どんなアドバイスも感謝しています。