【发布时间】:2016-02-26 10:13:42
【问题描述】:
我有 2 个地图对象(一个是初始状态,一个来自网络),我需要将初始状态与从网络接收的数据合并。但是,我保留"hideDetails": true 来处理客户端和其他服务器端的状态。
//initial state
var j = Immutable.fromJS({
"staffs": {
"hasRecievedData": false,
"addingNewStaff": false,
"data": {
"0": {
"name" : null,
"age" : null,
"designation" : null,
"email" : null,
"hideDetails": true
}
}
}
});
// data from network
var m = Immutable.fromJS({
"staffs" : {
"0" : {
"name" : "name1",
"age" : "23",
"designation" : "work1",
"email" : "aliasson@abcd.com"
},
"1" : {
"name" : "name2",
"age" : "22",
"designation" : "work2",
"email" : "aliassson@abcd.com"
}
}
});
我想合并这两个并得到如下的新状态,
var m = Immutable.fromJS({
"staffs" : {
"hasRecievedData": false,
"addingNewStaff": false,
"0" : {
"name" : "name1",
"age" : "23",
"designation" : "work1",
"email" : "aliasson@abcd.com",
"hideDetails": true
},
"1" : {
"name" : "name2",
"age" : "22",
"designation" : "work2",
"email" : "aliassson@abcd.com",
"hideDetails": true
}
}
});
如何使用 Merge 函数实现它?
更新1:
不确定这是否正确,但是我得到了结果,
f = j.merge({
hasRecievedData: true,
data: m.get("staffs").map(function(x){
return x.set("hideDetails",true);
})
});
【问题讨论】: