Comment remplacer les props imbriqués par un chemin fourni en référence ?
Voici un objet avec quelques accessoires et quelques accessoires principaux.
const obj = {
items: {
props: {
prop1: {
$ref: "#/items/props/Prop1",
},
prop2: {
$ref: "#/items/props/Prop2",
},
prop3: {
$ref: "#/items/props/Prop3",
},
prop4: {
subItems1: {
$ref: "#/items/props/Prop4",
},
subItems2: {
$ref: "#/items/props/Prop4",
},
},
prop5: {
$ref: "#/items/props/Prop5",
},
prop6: {
$ref: "#/items/props/Prop6",
},
prop7: {
$ref: "#/items/props/Prop7",
},
Prop1: {
nestedpropsFromProp1: {nestedSubPropsFromProp1: {}}
},
Prop2: {
nestedpropsFromProp2: {nestedSubPropsFromProp2: {}}
},
Prop3: {
nestedpropsFromProp3: {nestedSubPropsFromProp3: {}}
},
Prop4: {
nestedpropsFromProp4: {nestedSubPropsFromProp4: {}}
},
Prop5: {
nestedpropsFromProp5: {nestedSubPropsFromProp5: {}}
},
Prop6: {
nestedpropsFromProp6: {nestedSubPropsFromProp6: {}}
},
Prop7: {
nestedpropsFromProp6: {nestedSubPropsFromProp7: {}}
},
}
}
}
résultat attendu :
const exp_obj = {
items: {
props: {
prop1: {nestedSubPropsFromProp1: {}},
prop2: {nestedSubPropsFromProp2: {}},
prop3: {nestedSubPropsFromProp3: {}},
prop4: {
subItems1: {nestedSubPropsFromProp4: {}},
subItems2: {nestedSubPropsFromProp7: {}},
},
prop5: {nestedSubPropsFromProp5: {}},
prop6: {nestedSubPropsFromProp6: {}},
prop7: {nestedSubPropsFromProp7: {}},
}
}
}
L'idée ici est de remplacer
prop1: {
$ref: "#/items/props/Prop1",
},
avec la valeur de $ref: "#/items/props/Prop1"
(partout où cette valeur est requise c'est-à-dire que si le même chemin est référencé ($ref) à plusieurs endroits, tous ces endroits seront remplacés).
de sorte que nous obtenions prop1: {nestedSubPropsFromProp1: {}}
et le pro d'origine (en majuscules, par ex. Prop1
) seront supprimés du résultat final
La seule exigence est que chaque fois que vous rencontrez $ref -> lire la valeur correspondante (c'est-à-dire {$ref : valeur}. Cette valeur sera le chemin d'accès à la vraie Prop. & il suffit d'ajouter cette vraie Prop à l'endroit où vous avez vu $ref. C'est tout ! J'ai fourni un exemple de résultat attendu, vérifiez-le aussi!@