我需要更新现有的对象数据
oldData = {
"fnol": {
"operationStatus": {
"statusCode": "200",
"statusMessage": "Operation was successful."
},
"data": {
"policies": [
{
"formattedPolicyNumber": "abc8",
"producerCode": "TP109"
},
{
"formattedPolicyNumber": "abc8",
"producerCode": "TP110"
}
],
"user": {
"login": "URGENTNOTICES@test.COM",
"firstName": "firsname",
"lastName": "lastname",
"dateOfBirth": "1960-01-01",
"phone": {
"number": "3242342342",
"extension": "5454"
}
}
}
}
}
需要更新
let editedData = {
"fnol":{
"data":{
"user":{
"phone":{"number":"","extension":""}
}
}
}
}
editedData = editedData.fnol.data.user.phone.number = '0000000000';
所以我正在尝试使用更新用户电话号码
newData = new Object.assign({}, oldData, editedData);
但是我仍然在使用更新的数字获取oldData对象?
提前致谢
2 回答
要达到预期效果,请使用以下选项
首先将oldData分配给editedData
更改editedData的电话号码
分配给newData
codepen - https://codepen.io/nagasai/pen/QzWaXG?editors=1010
您可以使用这样的函数来沿路径更改(或添加)值:
这不会修改您的原始数据 . 它只处理对象,而不是数组 . 添加这些并不困难 .
如果您想使用
.
分隔的字符串而不是数组,则可以为该版本添加光泽,如下所示:但请注意这种灵活性的降低 . 路径中的节点不能再包含
.
字符 . 这对您来说可能是也可能不是问题,但对于一般的效用函数来说,这是一个真正的问题 .这个功能从Ramda的assocPath功能中获取灵感 . (我是Ramda的作者 . )