I have the following object:
const updatedFields = {
"user.name": "potato",
"plan": "diamond"
}
I expect it to be:
const obj = {
user: {
name: "potato"
},
plan: "diamond"
}
The code I am currently running:
const updatedFields = {
"user.name": "potato",
"plan": "diamond"
}
const obj = {}
setpath = ([p,...ps], v, o) => ps.length ? setpath(ps, v, o[p]) : o[p] = v
Object.entries(updatedFields).forEach(([p,v]) => setpath(p.split("."), v, obj))
console.log(obj)
The error I'm getting:
setpath = ([p,...ps], v, o) => ps.length ? setpath(ps, v, o[p]) : o[p] = v
^
TypeError: Cannot set property 'name' of undefined
at setpath (/tmp/8LYm4RhWvR.js:8:72)
at setpath (/tmp/8LYm4RhWvR.js:8:44)
at Object.entries.forEach (/tmp/8LYm4RhWvR.js:9:50)
at Array.forEach (<anonymous>)
at Object.<anonymous> (/tmp/8LYm4RhWvR.js:9:31)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
How can I solve it?