2017-05-30 4 views
0

J'ai une liste de cartes immuables qui ont (entre autres clés) une clé 'nom'. J'essaie d'obtenir un tableau de noms.Obtenir des valeurs par clé à partir de la liste des cartes immuables

Ma liste de cartes ressemble à ceci: [{'name': 'John', 'age': 23}, {'name': 'Eli', 'age': 30}]

J'ai essayé de faire ceci:

var result = myObject.map(function(a) {return a.name;});

mais qui ne fonctionne pas. Ne retourne pas un tableau.

Si je fais result.toArray, je reçois [undefined, undefined]

+0

Vous devez affecter la valeur de retour de 'map' à une variable. –

+4

Voir votre code fonctionne https://fiddle.jshell.net/bgesk3u6/ – prasanth

+0

Vous ne devez pas faire 'result.toArray'. résultat lui-même est un tableau. –

Répondre

3

En supposant que vous avez une liste de cartes immuables, vous aurez besoin d'utiliser la fonction get pour récupérer le nom. Donc, ce qui suit devrait fonctionner:

const list = Immutable.fromJS([{ 'name': 'John', 'age': 23 }, { 'name': 'Eli', 'age': 30 }]); 
const result = list.map(a => a.get('name'))); 
console.log(result); // ["John", "Eli"] 

Accès aux valeurs de la carte comme si elle était un objet régulier javascript ne fonctionne pas:

const map = Immutable.Map({ name: 'John', age: 23 }); 
console.log(map.name) // undefined 
console.log(map.get('name')) // John 

Cependant, en supposant que tous les noms sont fixes, vous pouvez utiliser un enregistrement Immuable comme suit:

const Person = Immutable.Record({ name: '', age: 0 }); 
const person = new Person({ name: 'John', age: 23 }); 
console.log(person.name) // John 
console.log(person.get('name')) // John