[JavaScript] 変数名について、キャメルケースとスネークケースの相互変換を行う方法
こんにちは、@yoheiMuneです。
サーバーとのAPI連携を実装していると、APIでのやりとりではスネークケース(例:user_name)を使い、JavaScript内の変数ではキャメルケース(例:userName)を使うことが多くあります。その際の変換を行う処理を、ブログに書いておきたいと思います。
API側で、キャメルケースでレスポンスを返してくれることもありますが(Djangoなどはそれ用のプラグインもある)、多くの場合は、スネークケースでの変数名のやりとりをするので、今回の実装を使う機会は多いです。
最後になりますが本ブログでは、Python、フロントエンド、PHP、サーバー、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
サーバーとのAPI連携を実装していると、APIでのやりとりではスネークケース(例:user_name)を使い、JavaScript内の変数ではキャメルケース(例:userName)を使うことが多くあります。その際の変換を行う処理を、ブログに書いておきたいと思います。
目次
スネークケース → キャメルケース(文字列)
スネークケースからキャメルケースに変換する場合、以下の関数を使うと実現できます。// スネークケースからキャメルケースに変換(文字列). function toCamelCase(str) { return str.split('_').map(function(word,index){ if (index === 0) { return word.toLowerCase(); } return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); }).join(''); }
// 実際に使ってみる. toCamelCase('user_name') // 結果 : 'userName'
スネークケース → キャメルケース(オブジェクト)
オブジェクトのプロパティ名を一括で修正する実装も、利用シーンが多くて便利です。// スネークケースからキャメルケースに変換(オブジェクト). function toCamelCaseObject(obj) { const result = {} Object.keys(obj).forEach(key => { result[toCamelCase(key)] = obj[key] }) return result }
// 実際に使ってみる. toCamelCaseObject({ user_id : 1, user_name : 'Yohei' }) // 結果 : { userId: 1, userName: 'Yohei' }
キャメルケース → スネークケース(文字列)
逆に、キャメルケースからスネークケースに変換する方法です。// キャメルケースからスネークケースに変換(文字列). function toUnderscoreCase(str) { return str.split(/(?=[A-Z])/).join('_').toLowerCase() }
// 実際に使ってみる. toUnderscoreCase('userName') // 結果 : 'user_ame'
キャメルケース → スネークケース(オブジェクト)
オブジェクトのプロパティを一括変換するのも便利です。// キャメルケースからスネークケースに変換(オブジェクト). function toUnderscoreCaseObject(obj) { const result = {} Object.keys(obj).forEach(key => { result[toUnderscoreCase(key)] = obj[key] }) return result }
// 実際に使ってみる. toUnderscoreCaseObject({ userId : 1, userName : 'Yohei' }) // 結果 : { user_id: 1, user_name: 'Yohei' }
最後に
これらの変換はライブラリを入れても出来るのですが、それだけのためにライブラリ入れるのもな〜と思う時には便利です。時々使っています。API側で、キャメルケースでレスポンスを返してくれることもありますが(Djangoなどはそれ用のプラグインもある)、多くの場合は、スネークケースでの変数名のやりとりをするので、今回の実装を使う機会は多いです。
最後になりますが本ブログでは、Python、フロントエンド、PHP、サーバー、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!