繁体   English   中英

如何在JavaScript中将蛇形散列转换为驼峰形

[英]How can I convert a snakecased hash into camelcase in javascript

我非常习惯使用连接到Rails后端的javascript,大多数情况下,其中一个必须让步以接受其他格式设置规则,例如ruby的snake_case和javascript的camelCase。

有两种方法可以在这两种格式之间替换字符串,但是最好以更直接的方式考虑对哈希中的所有键进行深度替换。

我在Cofeescript中提供了为我解决的方法,如果您需要它的javascript版本,则可以在Coffescript site中将其转换。

class Converter

  convertString: (string)->
    #Switch to the needed format
    string.replace(/(\_[a-z])/g, ($1)-> $1.toUpperCase().replace('_',''))

  convertObject: (obj)->
    newObj = {}
    for k,v of obj
      val = if typeof v is "object" and not Array.isArray(v) then @camelizeObject(v) else v
      key = @camelizeString(k)
      newObj[key] = val
    newObj

如果您不反对使用外部库,那么lodash可以提供以下功能: https ://lodash.com/docs#snakeCase并且它还提供了许多有用的帮助程序,可用于处理Javascript中的数组/集合/字符串。

例如,使用mapKeys ,您可以轻松地将对象的键“转换”为snake_case:

var obj = {
    fooBar: 'foo',
    Bar_Foo: 'bar'
}
obj = _.mapKeys(obj, function (value, key) {
    return _.snakeCase(key);
});
console.log(JSON.stringify(obj, null, 4));

/* output:
{
    "foo_bar": "foo",
    "bar_foo": "bar"
}
*/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM