Я придумал
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);
}
Но я не уверен, как будет вести себя v8 с этим, например, удалит ли он другие ключи или удалит ссылки, и сборщик мусора укусит меня позже?
Кроме того, я создал эти тесты, я надеюсь, вы можете добавить свой ответ там, чтобы мы могли видеть, как они совпадают.
РЕДАКТИРОВАТЬ 1: По-видимому, согласно испытаниям, это быстрее, если мы не будем проверять, находится ли ключ в нижнем регистре, но, ускоряясь в сторону, создаст ли он больше беспорядка, проигнорировав это и просто создав новые строчные ключи? Будет ли сборщик мусора быть счастливым с этим?