2017-10-18 3 views
3

Vous trouverez ci-dessous un fichier console.log d'un jeu de résultats de Neo4j. Il renvoie un tableau de cartes.Fonctionnement du mappage de touches dans les mappages JavaScript

Je peux results[0].get('RESULT'), ce qui renvoie l'objet ou la carte (je ne sais pas lequel c'est) pour la touche RESULT.

Comment ça marche? Quand je crée une carte, j'ai une clé et une valeur mais aucun moyen d'avoir un tableau de clés que lorsque j'appelle .get, il retourne l'objet "mappé".

[ Record { 
    keys: [ 'RESULT', 'PROVINCE', 'CITY' ], 
    length: 3, 
    _fields: [ [Object], [Object], [Object] ], 
    _fieldLookup: { RESULT: 0, PROVINCE: 1, CITY: 2 } 
    }, 
    Record { 
    keys: [ 'RESULT', 'PROVINCE', 'CITY' ], 
    length: 3, 
    _fields: [ [Object], [Object], [Object] ], 
    _fieldLookup: { RESULT: 0, PROVINCE: 1, CITY: 2 } 
    }, 
    Record { 
    keys: [ 'RESULT', 'PROVINCE', 'CITY' ], 
    length: 3, 
    _fields: [ [Object], [Object], [Object] ], 
    _fieldLookup: { RESULT: 0, PROVINCE: 1, CITY: 2 } 
    }] 

Quand je CONSOLE.LOG une carte, il ressemble à ceci:

Map { 
    'RESULT' => { name: 'Bob' }, 
    'PROVINCE' => { name: 'BC' }, 
    'CITY' => { name: 'Nanaimo' } 
} 

Répondre

2

Je suppose que vous utilisez le Neo4j Javascript Driver officiel.

Dans ce cas, le jeu de résultats que vous gérez est un tableau de Record objets. Lorsque vous faites results[0].get('RESULT'), vous appelez le get function implémenté dans cette classe.

les documentations Record.get fonction dit:

Obtenir une valeur de ce disque, que ce soit par index ou par clé sur le terrain.

+0

Je crois qu'ils sont un tableau de cartes puisque vous ne pouvez pas utiliser .get sur un objet? – Kainan

+0

@Kainan Dans ce cas '.get' est une fonction implémentée dans la classe Record de Neo4j Javascript Driver. Jetez un oeil dans la mise en œuvre dans [ce lien] (https://github.com/neo4j/neo4j-javascript-driver/blob/1.5/src/v1/record.js#L93). Il n'y a pas de relation avec [.get] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get) de Map. Aussi, quelle est la sortie de 'typeof results [0]'? –

+0

Le résultat est Object mais quand je fais typeof sur une carte il dit object to. Vous avez raison sur le .get étant une fonction. Merci de m'avoir aidé à comprendre cela. – Kainan

1

Vous pouvez utiliser .entries() pour obtenir des paires propriété, valeur du Map comme Iterator et Array.from() pour obtenir les propriétés comme un tableau

const map = new Map(); 
 
map.set("RESULT", {name:"Bob"}); 
 
map.set("PROVICE", {name:"BC"}); 
 
map.set("CITY", {name:"Nanaimo"}); 
 

 
let entries = Array.from(map.entries(), ([prop]) => prop); 
 

 
console.log(entries); 
 

 
let prop = "CITY"; 
 

 
console.log(
 
    map.get(entries[entries.indexOf(prop)]) 
 
); // `{"name": "Nanaimo"}`