我有一个函数,我试图更新一个不可变的对象,我试图获得一个扩展类型的功能,所以如果该项目存在,它不会重复。到目前为止,我已经尝试过这个:
var toggleFilter = function(parent, child){
let newActive = {};
newActive[parent] = child;
return state.merge('activeFilters', newActive);
};
这似乎无法正常工作。该状态的活动过滤器(这是一个不可变对象)看起来有点像这样
{
"parent1" : [..array of children],
"parent2" : [...array of children]
}
这些字符串看起来像Parent3
,child2
,所以我希望将它们添加为:
{
"parent1" : [..array of children],
"parent2" : [...array of children],
"parent3" : ["child2"]
}
但它也可能是parent1,child1 - 所以我希望将其放入parent1键,类似于扩展功能。非常感谢任何帮助,谢谢!
答案 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);
};