J'ai le code suivant pour obtenir une clé pour un objet donné. Ainsi, pour l'objet {"hello": {"data": {"a": "world", "b": "random"}}}
si la clé transmise est hello.data.a
, le résultat serait world
.
(object, key) => {
const keyParts = key.split(".");
let returnValue = object;
keyParts.forEach((part) => {
if (returnValue) {
returnValue = returnValue[part];
}
});
return returnValue;
}
J'essaie de comprendre comment je peux supprimer une propriété dynamiquement de la même manière. Je voudrais savoir comment je peux supprimer une propriété dynamiquement de la même manière. {"hello": {"data": {"b": "random"}}}
.
En fait, je veux que le même comportement comme delete object.hello.data.a
. Mais le problème, c'est que le hello.data.a
est une chaîne dynamique transmise. Bien sûr, quelque chose comme delete object[key]
ne fonctionnerait pas car la clé a des niveaux imbriqués. Cela fonctionnerait s'il n'y a qu'un seul niveau, mais ne fonctionnerait pas pour les éléments imbriqués.
Une autre remarque importante est que la performance est extrêmement importante dans ce cas. Ainsi, même si la création d'un nouvel objet et la copie de toutes les propriétés à l'exception de celle que je veux supprimer pourrait mais j'ai de sérieuses inquiétudes quant à l'impact sur les performances de cette solution par rapport à l'utilisation d'un système d'information. delete
mot-clé.
En raison d'autres facteurs externes, je ne souhaite pas non plus que la valeur de la propriété soit fixée à null
o undefined
. Je veux que la clé soit effectivement retirée de l'objet.
Comment y parvenir ?