2016-08-15 2 views
0

У меня есть динамический неизменяемый объект, и я хочу знать, как лучше получить значение на самом высоком уровне. Fiddle Exampleполучение значения/ключа из объекта динамической карты в immutable.js

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

Предположим, что я не знаю третьего уровня ключ ccc, что это лучший способ, чтобы получить его значение, которое в данном случае 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) 
     }) 
    }) 
}) 

ли в приведенном выше примере подходящий способ, чтобы получить значение ddd. Я не могу просто использовать map.getIn(['aaa','bbb','ccc']), потому что этот объект карты динамичен в моей ситуации.

+0

Вы все равно можете использовать 'map.getIn (['aaa', 'bbb'])' и итерации по этому объекту. –

ответ

1

Как я понимаю, вы пытаетесь получить ключ, который имеет значение ddd. Если вы знаете уровни вложенности объектов, вы можете просто сгладить его.

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

Теперь просто отфильтруйте карту и получите требуемый ключ.

Смежные вопросы