Immutable.jsのList
のmerge()
でList
を結合できると思っていたら違った。
const a = Immutable.List([
{item_name: 'apple'},
{item_name: 'chicken'}
])
const b = Immutable.List([
{item_name: 'car'}
])
こんな感じでリストがあって結合したいと思ったとき、ドキュメントを読むとmerge()
でできそう。
しかしmerge()
ではできません。concat()
を使います。
merge()
とconcat()
を比べてみます。
console.log(a.merge(b).toJS())
// Console
// [Object {
// item_name: "car"
// }, Object {
// item_name: "chicken"
// }]
// This is what I want to do
console.log(a.concat(b).toJS())
// Console
// [Object {
// item_name: "apple"
// }, Object {
// item_name: "chicken"
// }, Object {
// item_name: "car"
// }]
merge()
は配列のインデックスを元に merge しています。{item_name: 'apple'}
はa[0]
です。{item_name: 'car'}
もb[0]
と同じインデックスであるため、マージされてしまいます。
concat()
は素直にaのList
にbのList
を連結していることがわかります。
List.merge()
の挙動について少し勘違いをしてました。