Estoy tratando de usar una variable de ruta en una ruta JSON .
Mi problema es que mi variable se agrega como una nueva clave al objeto JSON en lugar de reemplazar mi ruta.
Mi código de ejemplo
Data = { first:{ "Name":"John", "Age":"43" } } let path = "first.name" let value = "Jan" Data[path] = value console.log(Data)Salida de corriente
Data = { first:{ "Name":"John", "Age":"43" }, "first.name": "Jan", }Rendimiento esperado
Data = { first:{ "Name":"Jan", "Age":"43" } }¿Hay una manera de resolver esto? Gracias por tu ayuda 🙏
Este script hará lo que quieras con un objeto (si entendí bien tu problema), hasta que le proporciones la ruta correcta :-)
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);básicamente cambia los atributos del objeto utilizando el hecho de que objCopy y obj comparten la misma referencia.