web-dev-qa-db-fra.com

ImmutableJS - supprimer l'élément de la carte

J'ai une carte avec cette structure:

{
1: {},
2: {}
}

Et j'aimerais en supprimer 2: {} (bien sûr - retourner une nouvelle collection sans cela). Comment puis-je le faire? J'ai essayé, mais quelque chose ne va pas:

 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

Utilisez simplement la méthode delete et la propriété entre guillemets:

theFormerMap = theFormerMap.delete("2")
20
Johann Echavarria

Utilisez simplement la méthode delete et passez la propriété que vous souhaitez supprimer:

theFormerMap = theFormerMap.delete(2)

Si cela ne fonctionne pas, vous avez probablement créé theFormerMap en utilisant fromJS:

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

La clé 2 n'est pas supprimée car il s'agit en fait d'une clé de chaîne. La raison en est que les objets javascript convertissent les clés numériques en chaînes.

Cependant, Immutable.js prend en charge les cartes avec des clés entières si vous les construisez sans utiliser fromJS:

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