![](/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.