ここでの基本的な問題は、あなたが地図を作成するときに、それだけ浅くにおけるオブジェクトキーを変換していることですキーをマップするオブジェクトを深く変換しません。これは問題ありませんが、このケースを正しく処理する必要があります。この状況を初めて処理する場合は、少し混乱する可能性があります。
まず、あなたがこの...
const test = Map({
arr: [{
id: 1
}, {
id: 2
}, {
id: 3
}]
})
はこのことを理解すべきである...
arr
に格納された値が配列していない不変のリストと値である
Map {
arr: [
{ id: 1 },
{ id: 2 },
{ id: 3 }
]
}
その配列に格納されているオブジェクトはマップではありません。
変更可能な値を変更するには、マップを更新してアレイを同時に変更する必要があります。不変のマップに格納されている変更可能な値を変更しないように、これを不変的に行いたいことに注意してください。これを行う不変の方法は、次のようになります。
あなたはid: 3
を持つオブジェクトが配置されている場所のインデックスを知っているならば、あなたは、インデックスがわからない場合、あなたは、配列をフィルタリングすることができ、インデックス...
const i = 2
test = test // remember that any change to an immutable object creates a new object, so assignment is required
.update('arr', (arr) => {
return arr.slice(0, i).concat(arr.slice(i + 1))
})
ことをスライスすることができます。 ..
test = test // remember that any change to an immutable object creates a new object, so assignment is required
.update('arr', (arr) => {
return arr.filter((obj) => obj.id !== 3)
})
この経験は、私が混在ネストされたデータ構造を扱う際に特に役立つようにmudashを書いた少し痛みを伴うことができます。あなたはこれと同じようにmudashでこれを達成することができます...
const _ = require('mudash')
// delete, this correctly traverses mixed structures...
test = _.delete(test, 'arr.2')
//update/filter, these methods correctly handle both immutable and stadard js types...
test = _.update(test, 'arr', (arr) => _.filter(arr, (obj) => obj.id !== 3))
test.deleteIn(key)? https://facebook.github.io/immutable-js/docs/#/Map/deleteIn – WilomGfx
Plsは私が@WilomGfxを理解できない例を提供しています – Nane