JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでオブジェクトのすべてのキーを小文字に変換する最も効率的な方法

JavaScriptでは、オブジェクトのキー名が大文字になっているケースに遭遇することがあります。APIのレスポンスやレガシーシステムとの連携などでは、キー名の大文字・小文字を統一したい場面は少なくありません。

ここでは、オブジェクトのすべてのキーを小文字に変換する効率的な方法を解説します。

変換前のオブジェクト

まず、次のようなオブジェクトがあるとします。

var details =
{
    "STUDENTNAME": "John",
    "STUDENTAGE": 21,
    "STUDENTCOUNTRYNAME": "US"
}

ご覧のとおり、このオブジェクトのキーはすべて大文字です。これらのキーをすべて小文字に変換するには、toLowerCase()メソッドを使用します。

実装コード

以下がそのサンプルコードです。

var details =
{
    "STUDENTNAME": "John",
    "STUDENTAGE": 21,
    "STUDENTCOUNTRYNAME": "US"
}
var tempKey, allKeysOfDetails = Object.keys(details);
var numberOfKey = allKeysOfDetails.length;
var allKeysToLowerCase = {}
while (numberOfKey--) {
    tempKey = allKeysOfDetails[numberOfKey];
    allKeysToLowerCase[tempKey.toLowerCase()] = details[tempKey];
}
console.log(allKeysToLowerCase);

コードのポイント

  • Object.keys():オブジェクトが持つすべてのキーを配列として取得します。
  • while (numberOfKey--):配列の後ろから順に処理することで、カウンタ変数の比較を省略し、わずかにパフォーマンスを向上させています。
  • toLowerCase():各キー名を小文字に変換し、新しいオブジェクトallKeysToLowerCaseに値とともに格納します。

元のオブジェクトdetailsは変更されず、新しいオブジェクトが生成される点にも注目してください。

プログラムの実行方法

Node.js環境で上記のプログラムを実行するには、次のコマンドを使用します。

node fileName.js

ここでは、ファイル名をdemo297.jsとしています。

実行結果

コンソールには次の出力が表示されます。

PS C:\Users\Amit\javascript-code> node demo297.js
{ studentcountryname: 'US', studentage: 21, studentname: 'John' }

このように、すべてのキー(studentname、studentage、studentcountryname)が小文字に変換され、それぞれ対応する値がそのまま保持されていることが確認できます。

まとめ

Object.keys()でキーの配列を取得し、ループ内でtoLowerCase()を使って新しいオブジェクトを作り直すことで、オブジェクトのキーをすべて小文字に効率的に変換できます。データの正規化やキー名の統一が必要な場面でぜひ活用してください。

  1. JavaScriptのMapオブジェクトとは?特徴と基本的な使い方を解説

    JavaScriptのMapオブジェクトとは MDNドキュメントによると、Mapオブジェクトは「キーと値のペア」を保持し、キーが挿入された元の順序を記憶するデータ構造です。任意の値(オブジェクトとプリミティブ値の両方)を、キーまたは値として自由に使用できます。 ここで特に重要なポイントは、オブジェクトそのものもMapのキーとして使えるという点です。これは通常のJavaScriptオブジェクトでは実現できない動作です。一般的なJSオブジェクトでは、キーとして使用できるのはプリミティブ値(文字列や数値など)のみに限られます。 さらに、Mapが特定の場面で役立つもう一つの大きな特徴は、反復可能(it

  2. 【JavaScript】オブジェクトが配列内のすべてのキーを含んでいるか判定する方法

    containsAll() 関数とは 本記事では、2つの引数を受け取る関数 containsAll() を作成します。第一引数にはオブジェクト、第二引数には文字列の配列を渡します。この関数は、オブジェクトが配列内で文字列として指定されたすべてのプロパティ(キー)を持っているかどうかに応じて、ブール値(true / false)を返します。 実装の考え方 実装のアプローチはシンプルです。配列を反復処理しながら、各要素がオブジェクトのキーとして存在するかどうかを順番にチェックしていきます。もし配列内の文字列がオブジェクトのキーとして見つからなければ、その時点で処理を中断して false を返しま