javascript无内置api统一转换对象键名大小写,需用object.fromentries+map(推荐)或object.keys+reduce实现;嵌套对象需递归处理,并注意键冲突、symbol键等边界情况。

JavaScript 中没有内置的 API 直接将对象所有键名统一转为大写或小写,但可以通过 Object.keys() + reduce() 或 Object.fromEntries() 配合 map() 快速实现,核心是遍历原对象、重命名键并构建新对象。
使用 Object.fromEntries + map(推荐,简洁现代)
这是目前最清晰、函数式风格的做法,适合大多数场景:
- 先用
Object.entries(obj)获取键值对二维数组 - 用
map()对每个[key, value]改造:把key转成小写(或大写),保持value不变 - 再用
Object.fromEntries()把处理后的数组转回对象
示例(转小写):
const original = { 'UserName': 'Alice', 'AGE': 30, 'IsAdmin': true };
const lowerCaseKeys = Object.fromEntries(
Object.entries(original).map(([k, v]) => [k.toLowerCase(), v])
);
// → { username: 'Alice', age: 30, isadmin: true }
使用 reduce 手动构建(兼容性更好)
如果需要支持较老环境(如 IE),可用 reduce() 替代 fromEntries:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
Object.keys(obj)获取所有键名 -
reduce()初始化一个空对象,每次把转换后的键和对应值设进去 - 注意避免意外覆盖(比如原对象有
'Name'和'name',转小写后会冲突)
示例(转大写):
const upperCaseKeys = Object.keys(original).reduce((acc, key) => {
acc[key.toUpperCase()] = original[key];
return acc;
}, {});
处理嵌套对象(需递归)
上述方法只处理顶层键。若需统一整个嵌套结构的键名,要封装递归函数:
- 判断当前值是否为纯对象(且非 null、非数组、非 Date 等)
- 对对象自身键做大小写转换,同时对其每个值递归调用同一函数
- 基础类型(字符串、数字、null 等)直接返回,数组则映射每个元素
简单递归示例(仅转小写):
function keysToLower(obj) {
if (obj !== null && typeof obj === 'object' && !Array.isArray(obj)) {
return Object.fromEntries(
Object.entries(obj).map(([k, v]) => [k.toLowerCase(), keysToLower(v)])
);
}
return obj;
}
注意事项与边界情况
实际使用时需留意这些细节:
-
键名冲突:如
{ Name: 1, name: 2 }转小写后只剩一个name,后者会覆盖前者 -
Symbol 键:
Object.keys()和Object.entries()均忽略 Symbol 类型键,需额外处理 -
原型链属性:确保只处理对象自身可枚举属性(默认行为已满足,无需额外
hasOwnProperty) - 性能:对超大对象,频繁创建新对象可能影响性能,必要时可考虑就地修改(不推荐,破坏不可变性)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










