![](/img/trans.png)
[英]What is the standard naming convention of properties in a object, camelCase or snake_case?
[英]Change snake_case to camelCase
我认为问题在于您使用的 package 删除了他找到的每个下划线并将其后的字母转换为大写。
您只需要检查第一个字母是否为下划线并将其删除:
const obj = { "_id" : 12345678, "name" : "John Doe" };
for (let key in obj){
if (key[0] === "_"){
const newKey = key.slice(1);
obj[newKey] = obj[key];
delete obj[key];
}
}
console.log(obj)
编辑:递归:
const obj = { "_id" : 12345678, "name" : "John Doe", "inner_obj" : { "_id" : 12345678 } };
function removeUnderscore(obj){
for (let key in obj){
let newKey = key;
if (key[0] === "_"){
newKey = key.slice(1);
obj[newKey] = obj[key];
delete obj[key];
}
if (typeof obj[newKey] === "object" && !Array.isArray(obj[newKey])) removeUnderscore(obj[newKey])
}
}
removeUnderscore(obj);
console.log(obj);
很难从上面的陈述中辨别出您的架构或数据流。
但我会说你目前将整个数据结构重新格式化为蛇或骆驼的方法是不必要的。 除非这个数据结构是通过函数传递的,而你无法控制它是如何被撤消的。
重新格式化数据结构需要递归循环。 随着数据结构的大小和嵌套的增加,您的时间和复杂性将会增加。
我建议您创建一个包装 lo-dash.get 和 change-case 的 function。
示例: getData(dataStructure, path, case, defaultValue);
预先格式化整个数据结构可能代价高昂并且会导致性能问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.