以下是带有深厚道具的物体。
如何替换以下属性
name: 'name'
与:
name: 'replaced_name'
const sample_object = {
prop1: {
subprop1: {
anothersubprop1: {
properties: {
deepProp1: {
name: 'name'
}
},
'$ref': {
},
name: 'name'
}
}
},
prop2: {
subprop1: {
anothersubprop1: {
properties: {
deepProp1: {
name: 'name'
}
},
'$ref': {
},
name: 'name'
},
name: 'name'
},
subprop2: {
anothersubprop1: {
properties: {
deepProp1: {
name: 'name'
},
deepProp2: {
name: 'name'
}
},
'$ref': {
},
name: 'name'
},
anothersubprop2: {
properties: {
deepProp1: {
name: 'name'
},
deepProp2: {
name: 'name'
}
},
'$ref': {
},
name: 'name'
},
name: 'name'
...
}
},
}
预期结果:
const sample_object = {
prop1: {
subprop1: {
anothersubprop1: {
properties: {
deepProp1: {
name: 'replaced_name'
}
},
'$ref': {
},
name: 'replaced_name'
}
}
},
prop2: {
subprop1: {
anothersubprop1: {
properties: {
deepProp1: {
name: 'replaced_name'
}
},
'$ref': {
},
name: 'replaced_name'
},
name: 'replaced_name'
},
subprop2: {
anothersubprop1: {
properties: {
deepProp1: {
name: 'replaced_name'
},
deepProp2: {
name: 'replaced_name'
}
},
'$ref': {
},
name: 'replaced_name'
},
anothersubprop2: {
properties: {
deepProp1: {
name: 'replaced_name'
},
deepProp2: {
name: 'replaced_name'
}
},
'$ref': {
},
name: 'replaced_name'
},
name: 'replaced_name'
...
}
},
}
如果可以使用lodash或任何其他类似的库,请提出建议 或任何自定义代码
答案 0 :(得分:0)
您可以编写一个递归帮助器
onPrepareOptionsMenu
答案 1 :(得分:0)
您可以将对象更改为字符串,然后将旧值替换为新值,然后使用JSON.parse
将字符串再次作为对象
示例:
let str = JSON.stringify(sample_object)
str = str.replace(/"name":"name"/g, '"name":"replaced_name"') // g -> for replace all the occurrences of the `name: name`
console.log(JSON.parse(str))