Si j'ai une liste immuable comme:Comment mettre à jour la carte dans une liste
List([
Map({ something: 1 }),
Map({ something: 2 }),
])
Comment puis-je faire quelque chose = 5 définir où quelque chose = 1?
Si j'ai une liste immuable comme:Comment mettre à jour la carte dans une liste
List([
Map({ something: 1 }),
Map({ something: 2 }),
])
Comment puis-je faire quelque chose = 5 définir où quelque chose = 1?
Vous pouvez utiliser map + set afin d'atteindre cet
console.clear();
const list = Immutable.List([
Immutable.Map({ something: 1 }),
Immutable.Map({ something: 2 }),
Immutable.Map({ something: 4 }),
Immutable.Map({ something: 1 })
])
const newList = list.map(item =>
item.get("something") === 1 ? item.set("something", 5) : item
);
console.log('Old',JSON.stringify(list.toArray(),null, ""));
console.log('New',JSON.stringify(newList.toArray(),null, ""));
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.7.2/immutable.min.js"></script>
@ Qop de réponse fonctionnera bien si vous êtes à la recherche d'une clé spécifique.
Si vous souhaitez mettre à jour plusieurs valeurs dans chaque carte, vous pouvez utiliser .mapEntries() dans l'appel list.map.
things
.map(thing => {
return thing.mapEntries(([ k, v ]) => {
const val = (v === 5) ? 1 : v;
return [ k, val ]
})
});