immutablejs,合并(或扩展)不可变对象

时间:2015-12-28 22:25:56

标签: javascript immutable.js

我有一个函数,我试图更新一个不可变的对象,我试图获得一个扩展类型的功能,所以如果该项目存在,它不会重复。到目前为止,我已经尝试过这个:

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键,类似于扩展功能。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分: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);
};