let obj ={ 'thisA':'a', 'thisB':{ 'thisBC':'bc', 'thisBD':{ 'thisBDE':'bde', } } } function change(obj,str){ let res = null; let arr = str.split('.'); let last = arr[arr.length-1]; let changeLast = last.replace(/(A-Z)/g,'_$1').toLowerCase(); let newObj = {}; arr.reduce((pre,cur)=>{ res = pre[cur]; newObj[changeLast] = res; return res },obj); obj[changeLast] = newObj[changeLast]; return obj } console.log(change(obj,'thisB.thisBD'));