我正在嘗試在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"
}
}
有沒有辦法解決這個問題?謝謝你的幫助??
uj5u.com熱心網友回復:
此腳本將使用物件執行您想要的操作(如果我很好地理解您的問題),直到您為它提供正確的路徑:-)
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 共享相同參考的事實來更改物件的屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364902.html
標籤:javascript json 变量 小路
上一篇:從多維陣列動態創建多維物件
