簡體   English   中英

將 snake_case 更改為 camelCase

[英]Change snake_case to camelCase

目前,場景是來自 Nodejs 后端的數據采用 snake_case,但前端使用的是駝峰命名法。 我正在使用snakeizecamelize來轉換套管,但有妥協。

問題

使用 camelize 的 ObjectId _id被轉換為Id而我期望為id

期待

_id必須轉換為id

我認為問題在於您使用的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM