我想出来的
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: 显然,根据测试结果,如果我们不检查键是否已经是小写字母会更快,但是更快的是,它会忽略这一点而只是创建新的小写字母键,从而产生更多的混乱吗?垃圾收集者会满意吗?