如何将嵌套对象中的所有键转换为小写?
如何将嵌套对象的所有键转换为小写?
输入示例
let input = { "KEY1": "VALUE1", "KEY2": {"SUBKEY1": "SUBVALUE2"} };
期望输出
{ "key1": "VALUE1", "key2": {"subkey1": "SUBVALUE2"} }
解决方案
可以通过递归函数实现,遍历对象的所有键并转换为小写,同时处理嵌套的子对象(甚至数组内的嵌套对象):
function convertKeysToLower(obj) { // 非对象或null直接返回原值 if (typeof obj !== 'object' || obj === null) { return obj; } // 数组则遍历每个元素递归处理 if (Array.isArray(obj)) { return obj.map(item => convertKeysToLower(item)); } // 处理普通对象 const lowerCaseObj = {}; for (const key in obj) { if (obj.hasOwnProperty(key)) { const lowerKey = key.toLowerCase(); lowerCaseObj[lowerKey] = convertKeysToLower(obj[key]); } } return lowerCaseObj; } // 调用示例 let input = { "KEY1": "VALUE1", "KEY2": {"SUBKEY1": "SUBVALUE2"} }; const result = convertKeysToLower(input); console.log(result);
函数说明
- 先判断输入是否为有效对象,若不是(比如字符串、数字、null)直接返回原值;
- 若输入是数组,遍历每个元素并递归处理,确保数组内的嵌套对象也被转换;
- 若输入是普通对象,遍历其所有自有键,将键转为小写后作为新对象的键,对应的值递归调用函数处理,实现深层嵌套转换。
内容的提问来源于stack exchange,提问作者alphanumeric
相关产品推荐
相关产品推荐

