2015-12-28 19 views
0

我在那裏我試圖更新immuteable對象的功能,我想獲得的功能的擴展類型,所以如果該項目存在,它不重複。到目前爲止,我已經嘗試過這種方式:immutablejs,合併(或擴展)不可變對象

var toggleFilter = function(parent, child){ 
    let newActive = {}; 
    newActive[parent] = child; 
    return state.merge('activeFilters', newActive); 
}; 

這似乎沒有正常工作。在這種狀態下的有源濾波器(這是一個不可變對象),只是看起來有點像這個

{ 
    "parent1" : [..array of children], 
    "parent2" : [...array of children] 
} 

而那些字符串的樣子Parent3child2來,所以我想他們只是在等補充說:

{ 
    "parent1" : [..array of children], 
    "parent2" : [...array of children], 
    "parent3" : ["child2"] 
} 

但它也可能是parent1,child1 - 所以我希望將它放入parent1鍵,有點像擴展功能。希望有任何幫助,謝謝!

回答

0
var toggleFilter = function(parent, child){ 
    // we create a new children array 
    let children = state.get('activeFilters.' + parent) || new List(); 
    // we check for child's pre-existence 
    if (children.indexOf(child) > -1) 
     return state; 
    children = children.push(child); 
    // we add it back to state 
    return state.set('activeFilters.'+parent, children); 
}; 
+0

好吧,這是有道理的,但如果我想避免重複的孩子呢?謝謝! – ajmajmajma

+0

已更新的答案。 – Louy