2016-08-15 107 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" 
/// } 

現在,只需過濾地圖,並獲得必要的密鑰。