Je suis arrivé à
function keysToLowerCase (obj) {
var keys = Object.keys(obj);
var n = keys.length;
while (n--) {
var key = keys[n]; // "cache" it, for less lookups to the array
if (key !== key.toLowerCase()) { // might already be in its lower case version
obj[key.toLowerCase()] = obj[key] // swap the value to a new lower case key
delete obj[key] // delete the old key
}
}
return (obj);
}
Mais je ne suis pas sûr du comportement de v8 à ce sujet, par exemple, va-t-il vraiment supprimer les autres clés ou va-t-il seulement supprimer les références et le garbage collector me posera-t-il un problème plus tard ?
Aussi, j'ai créé ces tests, j'espère que vous pourrez ajouter votre réponse là-bas pour voir comment elles se comparent.
ÉDIT 1: Apparemment, selon les tests, c'est plus rapide si nous ne vérifions pas si la clé est déjà en minuscules, mais mis à part le fait d'être plus rapide, est-ce que cela créera plus de désordre en ignorant cela et en créant simplement de nouvelles clés en minuscules ? Le garbage collector sera-t-il satisfait de cela ?