web-dev-qa-db-ja.com

ImmutableJS-マップから要素を削除

この構造のマップがあります:

{
1: {},
2: {}
}

そして、それから2:{}を削除したいと思います(もちろん-これなしで新しいコレクションを返します)。どうすればできますか?私はこれを試しましたが、何かが間違っています:

 theFormerMap.deleteIn([],2) //[] should mean that it's right in the root of the map, and 2 is the name of the object I want to get rid of
18
user3696212

deleteメソッドを使用し、プロパティを二重引用符で囲みます。

theFormerMap = theFormerMap.delete("2")
20

deleteメソッドを使用して、削除するプロパティを渡すだけです。

theFormerMap = theFormerMap.delete(2)

これが機能しない場合は、theFormerMapを使用してfromJSを作成した可能性があります。

Immutable.fromJS({1: {}, 2: {}}).delete(2)
=> Map { "1": Map {}, "2": Map {} }

キー2は、実際には文字列キーであるため、削除されません。その理由は、JavaScriptオブジェクトが数値キーを文字列に変換するためです。

ただし、fromJSを使用せずにマップを構築する場合、Immutable.jsは整数キーのマップをサポートします。

Immutable.Map().set(1, Immutable.Map()).set(2, Immutable.Map()).delete(2)
=> Map { 1: Map {} }
6
gabrielf