我正试图在JSON路径中使用路径变量。
我的问题是,我的变量被添加为JSON对象的新键,而不是替换我的路径。
我的示例代码
Data = {
first:{
"Name":"John",
"Age":"43"
}
}
let path = "first.name"
let value = "Jan"
Data[path] = value
console.log(Data)
电流输出
Data = {
first:{
"Name":"John",
"Age":"43"
},
"first.name": "Jan",
}
预期输出
Data = {
first:{
"Name":"Jan",
"Age":"43"
}
}
有办法解决这个问题吗?谢谢你的帮助🙏
这个脚本将对对象执行您想要的操作(如果我很好地理解您的问题(,直到您为它提供正确的路径:-(
function setAttr(obj, path, value){
let objCopy = obj;
let attrNameArr = path.split('.');
for(let idx = 0; idx < attrNameArr.length-1; idx++){
objCopy = objCopy[attrNameArr[idx]];
}
objCopy[attrNameArr[attrNameArr.length-1]] = value;
return obj;
}
Data = {
first:{
"Name":"John",
"Age":"43"
}
}
setAttr(Data, "first.Name", "Jan");
console.log(Data);
它基本上使用objCopy和obj共享相同引用的事实来更改对象的属性。