javascript 将snake_case更改为camelCase

vm0i2vca  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(159)

目前的场景是来自Nodejs后端的数据使用snake_case格式,但前端使用camelCase。我使用snakeizecamelize转换大小写,但有一个折衷方案。

    • 问题**

使用camelize的ObjectId _id被转换为Id,而我期望的是id

    • 预期**。

必须将_id转换为id

aydmsdu9

aydmsdu91#

我认为问题是你使用的软件包删除了他找到的每一个下划线,并将下划线后面的字母转换为大写字母。
您只需要检查第一个字母是否是下划线并删除它:

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);
x8diyxa7

x8diyxa72#

从上面的陈述中很难辨别出您的体系结构或数据流。
但是我想说,你目前的方法,重新格式化整个数据结构,要么是蛇或 Camel 是不必要的,除非这个数据结构是通过函数传递的,你不能控制它如何撤退。
重新格式化数据结构需要递归循环。随着数据结构的大小和嵌套的增长,您的时间和复杂性将增加。
我建议您创建一个 Package lo-dash.get和change-case的函数。
示例:getData(dataStructure, path, case, defaultValue);
预先格式化整个数据结构可能成本高昂,并会导致性能问题

相关问题