The lodash method snakeCase exported as a standalone Node.js module for converting strings to snake_case format. This utility transforms camelCase, PascalCase, kebab-case, and space-separated strings into lowercase words connected by underscores, with robust Unicode and internationalization support.
npm install lodash.snakecasevar snakeCase = require('lodash.snakecase');For ES6+ environments with module support:
import snakeCase from 'lodash.snakecase';var snakeCase = require('lodash.snakecase');
// Convert camelCase
snakeCase('fooBar');
// => 'foo_bar'
// Convert PascalCase
snakeCase('FooBar');
// => 'foo_bar'
// Convert kebab-case
snakeCase('--FOO-BAR--');
// => 'foo_bar'
// Convert space-separated words
snakeCase('Foo Bar');
// => 'foo_bar'
// Handle complex strings with mixed patterns
snakeCase('XMLHttpRequest');
// => 'xml_http_request'Converts strings to snake_case format by transforming various naming conventions into lowercase words connected by underscores. Handles Unicode characters, accents, and complex string patterns through sophisticated regular expression processing.
/**
* Converts string to snake case
* @param {string} [string=''] - The string to convert
* @returns {string} Returns the snake cased string
*/
function snakeCase(string)Parameter Details:
string (string, optional): The string to convert. Defaults to empty string if not provided or if null/undefined is passed.Return Value:
Behavior:
Comprehensive Examples:
// Basic case conversions
snakeCase('Foo Bar');
// => 'foo_bar'
snakeCase('fooBar');
// => 'foo_bar'
snakeCase('FooBar');
// => 'foo_bar'
// Delimiter handling
snakeCase('--FOO-BAR--');
// => 'foo_bar'
snakeCase('foo-bar-baz');
// => 'foo_bar_baz'
snakeCase('foo_bar_baz');
// => 'foo_bar_baz'
// Complex patterns
snakeCase('XMLHttpRequest');
// => 'xml_http_request'
snakeCase('iOS App');
// => 'i_os_app'
snakeCase('HTML5Parser');
// => 'html5_parser'
// Unicode and special characters
snakeCase('café münü');
// => 'cafe_munu'
snakeCase('naïve approach');
// => 'naive_approach'
// Numbers and mixed content
snakeCase('user123ID');
// => 'user123_id'
snakeCase('API2Client');
// => 'api2_client'
// Edge cases
snakeCase('');
// => ''
snakeCase(null);
// => ''
snakeCase(undefined);
// => ''
snakeCase(' ');
// => ''
snakeCase('a');
// => 'a'Convert JavaScript object properties to database-friendly column names:
var snakeCase = require('lodash.snakecase');
var userData = {
firstName: 'John',
lastName: 'Doe',
emailAddress: 'john@example.com',
phoneNumber: '+1234567890'
};
var dbColumns = {};
Object.keys(userData).forEach(function(key) {
dbColumns[snakeCase(key)] = userData[key];
});
console.log(dbColumns);
// => {
// first_name: 'John',
// last_name: 'Doe',
// email_address: 'john@example.com',
// phone_number: '+1234567890'
// }Transform camelCase API keys to snake_case for external APIs:
var apiKeys = ['userId', 'accessToken', 'refreshToken', 'clientSecret'];
var snakeKeys = apiKeys.map(snakeCase);
console.log(snakeKeys);
// => ['user_id', 'access_token', 'refresh_token', 'client_secret']Convert configuration keys to environment variable format:
var configKeys = ['serverPort', 'databaseUrl', 'apiSecret', 'debugMode'];
var envVars = configKeys.map(function(key) {
return snakeCase(key).toUpperCase();
});
console.log(envVars);
// => ['SERVER_PORT', 'DATABASE_URL', 'API_SECRET', 'DEBUG_MODE']Process form field names for backend APIs:
var formData = {
'userFirstName': 'Alice',
'userLastName': 'Smith',
'contactEmail': 'alice@example.com',
'preferredLanguage': 'en-US'
};
var processedData = {};
for (var key in formData) {
processedData[snakeCase(key)] = formData[key];
}
console.log(processedData);
// => {
// user_first_name: 'Alice',
// user_last_name: 'Smith',
// contact_email: 'alice@example.com',
// preferred_language: 'en-US'
// }Convert GraphQL field names to match database schema:
var graphqlFields = [
'createdAt',
'updatedAt',
'isActive',
'lastLoginTime',
'userPreferences'
];
var dbFields = graphqlFields.map(snakeCase);
console.log(dbFields);
// => [
// 'created_at',
// 'updated_at',
// 'is_active',
// 'last_login_time',
// 'user_preferences'
// ]The snakeCase function is designed to be robust and never throw errors:
null and undefined inputs gracefully (returns empty string)// Safe with any input type
snakeCase(123); // => '123'
snakeCase(true); // => 'true'
snakeCase([1, 2, 3]); // => '1,2,3'
snakeCase({}); // => '[object Object]' -> '[object_object]'