Skip to content

Instantly share code, notes, and snippets.

@emcmanus
Forked from felixjung/snakeToCamelCase.js
Last active May 31, 2025 09:32
Show Gist options
  • Select an option

  • Save emcmanus/eb735299788c820b4eb85c38f02598e4 to your computer and use it in GitHub Desktop.

Select an option

Save emcmanus/eb735299788c820b4eb85c38f02598e4 to your computer and use it in GitHub Desktop.

Revisions

  1. emcmanus revised this gist Mar 30, 2017. 1 changed file with 15 additions and 14 deletions.
    29 changes: 15 additions & 14 deletions snakeToCamelCase.js
    Original file line number Diff line number Diff line change
    @@ -3,30 +3,31 @@
    /**
    * @example
    * import keysToCamelCase from './snakeToCamelCase';
    * keysToCamelCase({bad_key: 1});
    * keysToCamelCase({bad_key: 1}); => {badKey: 1}
    * keysToCamelCase([{bad_key: 1}]); => [{badKey: 1}]
    */

    import 'lodash';

    export default function (object) {
    function keysToCamelCase(object) {
    let camelCaseObject = _.cloneDeep(object);

    // Convert keys to camel case
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return _.camelCase(key);
    });
    if (_.isArray(camelCaseObject)) {
    return _.map(camelCaseObject, keysToCamelCase);
    } else {
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return _.camelCase(key);
    });

    // Recursively apply throughout object
    return _.mapValues(
    camelCaseObject,
    value => {
    // Recursively apply throughout object
    return _.mapValues(camelCaseObject, (value) => {
    if (_.isPlainObject(value)) {
    return keysToCamelCase(value);
    } else if (_.isArray(value)) {
    return _.map(value, keysToCamelCase);
    } else {
    return value;
    }
    }
    );
    });
    }
    }

    export default keysToCamelCase;
  2. emcmanus revised this gist Mar 30, 2017. 1 changed file with 3 additions and 5 deletions.
    8 changes: 3 additions & 5 deletions snakeToCamelCase.js
    Original file line number Diff line number Diff line change
    @@ -12,11 +12,9 @@ export default function (object) {
    let camelCaseObject = _.cloneDeep(object);

    // Convert keys to camel case
    if (!_.isArray(camelCaseObject)) {
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return _.camelCase(key);
    });
    }
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return _.camelCase(key);
    });

    // Recursively apply throughout object
    return _.mapValues(
  3. emcmanus revised this gist Mar 30, 2017. 1 changed file with 5 additions and 3 deletions.
    8 changes: 5 additions & 3 deletions snakeToCamelCase.js
    Original file line number Diff line number Diff line change
    @@ -12,9 +12,11 @@ export default function (object) {
    let camelCaseObject = _.cloneDeep(object);

    // Convert keys to camel case
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return _.camelCase(key);
    });
    if (!_.isArray(camelCaseObject)) {
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return _.camelCase(key);
    });
    }

    // Recursively apply throughout object
    return _.mapValues(
  4. emcmanus revised this gist Mar 3, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion snakeToCamelCase.js
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,7 @@ export default function (object) {

    // Convert keys to camel case
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return key.replace(/(_\w)/g, match => match[1].toUpperCase());
    return _.camelCase(key);
    });

    // Recursively apply throughout object
  5. emcmanus revised this gist Mar 3, 2017. 1 changed file with 7 additions and 1 deletion.
    8 changes: 7 additions & 1 deletion snakeToCamelCase.js
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,19 @@
    'use strict';

    /**
    * @example
    * import keysToCamelCase from './snakeToCamelCase';
    * keysToCamelCase({bad_key: 1});
    */

    import 'lodash';

    export default function (object) {
    let camelCaseObject = _.cloneDeep(object);

    // Convert keys to camel case
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return key.replace(/(_\w)/, match => match[1].toUpperCase());
    return key.replace(/(_\w)/g, match => match[1].toUpperCase());
    });

    // Recursively apply throughout object
  6. @felixjung felixjung created this gist Oct 23, 2015.
    26 changes: 26 additions & 0 deletions snakeToCamelCase.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    'use strict';

    import 'lodash';

    export default function (object) {
    let camelCaseObject = _.cloneDeep(object);

    // Convert keys to camel case
    camelCaseObject = _.mapKeys(camelCaseObject, (value, key) => {
    return key.replace(/(_\w)/, match => match[1].toUpperCase());
    });

    // Recursively apply throughout object
    return _.mapValues(
    camelCaseObject,
    value => {
    if (_.isPlainObject(value)) {
    return keysToCamelCase(value);
    } else if (_.isArray(value)) {
    return _.map(value, keysToCamelCase);
    } else {
    return value;
    }
    }
    );
    }