let jsonObj = {
data: {
level1: {
level2: {
level3: {
targetKey: 'targetValue'
},
targetKey: 'targetValue',
level3ContentKey: 'level3value'
},
targetkey: 'targetValue',
level2ContentKey: 'level2value'
},
targetKey: 'targetValue',
level1contentKey: 'level1Value'
}
}
function replaceValueInMultiLayerObject(mock, parents) {
let helper = (jsonObject, parents) => {
for (let [key, value] of Object.entries(jsonObject)) {
if (key === 'targetKey') {
let path = parents.reduce((all, item) => all + '.' + item, '').slice(1) + '.' + key;
console.log('jsonObj.' + path);
}
if (typeof(value) === 'object') {
parents.push(key);
helper(value, parents);
parents.pop()
}
}
}
let res = helper(mock, []);
}
replaceValueInMultiLayerObject(jsonObj);
console.log(jsonObj);
我是这么遍历path的,
拿到的path是string
"jsonObj.data.level1.level2.level3.targetKey"
"jsonObj.data.level1.level2.targetKey"
"jsonObj.data.targetKey"