我有一个带有下划线键的对象
const obj={api_key:1,is_auth:false}
我想要camelCase钥匙
const obj={apiKey:1,isAuth:false}
您可以使用正则表达式映射键,将下划线和后面的字符替换为大写字符。类似于:
const obj = {
api_key: 1,
is_true: false,
all___under_scores: true,
_test: "Tested",
test_: "TestedToo (nothing to replace)",
};
const keys2CamelCase = obj => Object.fromEntries(
Object.entries(obj)
.map(([key, value]) =>
[key.replace(/_{1,}([a-z])/g, (a, b) => b.toUpperCase()), value])
);
console.log(keys2CamelCase(obj));
如果您还想删除尾随下划线,请使用
key.replace(/_{1,}([a-z])|_$/g, (a, b) => b && b.toUpperCase() || ``)
RegEx可以更改大小写,然后必须将转换后的密钥放入对象中:
const obj = { api_key: 1, is_auth: false } // your sample data
for(let key in obj) {
let newKey = key.replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase());
if(newKey!=key) {
obj[newKey] = obj[key];
delete obj[key];
}
}
内部if
负责保存obj中任何应而不是遵循Snake Case的密钥。