繁体   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