2016-08-15 1 views
0

Ich habe ein dynamisches unveränderliches Objekt und möchte einen besseren Weg kennen, um einen tiefliegenden Wert zu erhalten. Fiddle ExampleAbrufen des Werts/Schlüssels aus einem dynamischen Kartenobjekt in immutable.js

var map = {aaa:{bbb:{ccc:'ddd'}}} 
map = Immutable.fromJS(map) 

Nehmen wir an, ich weiß nicht, die Third-Level-Schlüssel ccc, was ist der beste Weg, um seinen Wert zu erhalten, die in diesem Fall ddd?

var map = {aaa:{bbb:{ccc:'ddd'}}} 
map = Immutable.fromJS(map) 

map.keySeq().toList().map(first=>{ 
    map.get(first).keySeq().toList().map(second=>{ 
     map.getIn([first,second]).valueSeq().toList().map(third=>{ 
      alert(third) 
     }) 
    }) 
}) 

ist das obige Beispiel eine geeignete Art und Weise ddd den Wert zu erhalten. Ich kann nicht einfach map.getIn(['aaa','bbb','ccc']) verwenden, weil dieses Kartenobjekt in meiner Situation dynamisch ist

+0

Sie könnten immer noch 'map.getIn (['aaa', 'bbb'])' 'verwenden und nur über dieses Objekt iterieren. –

Antwort

1

Wie ich verstehe, versuchen Sie, den Schlüssel zu erhalten, der ddd Wert hat. Wenn Sie die Verschachtelungsebenen für Objekte kennen, können Sie sie einfach reduzieren.

var map = {aaa:{bbb:{ccc:'ddd'},eee:{fff:'ggg'}}}; 
var map = map.flatten(3); 
/// { 
/// ccc: "ddd", 
/// fff: "ggg" 
/// } 

Jetzt einfach die Karte filtern und erforderlichen Schlüssel erhalten.

Verwandte Themen