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

JavaScriptでオブジェクト(JSON)のサイズ=プロパティ数を取得する最良の方法

JavaScriptでは、配列と異なりオブジェクトには length プロパティが存在しません。そのため、オブジェクトのサイズ(プロパティの総数)を知りたい場合は、自前でカウントする処理を用意する必要があります。

対象となるオブジェクトの例

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

const obj = {
    name: "Ramesh",
    age: 34,
    occupation: "HR Manager",
    address: "Tilak Nagar, New Delhi",
    experience: 13
};

このオブジェクトに対して、サイズ(プロパティの数)を計算する関数を作成していきます。

実装例:for...in ループと hasOwnProperty を使う方法

for...in ループでキーを順番に取り出しながら、hasOwnProperty() を使ってオブジェクト自身が持つプロパティのみをカウントするのがポイントです。これにより、プロトタイプチェーンから継承されたプロパティまで誤って数えてしまうことを防げます。

const obj = {
    name: "Ramesh",
    age: 34,
    occupation: "HR Manager",
    address: "Tilak Nagar, New Delhi",
    experience: 13
};
Object.prototype.size = function(obj) {
    let size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)){
            size++
        };
    };
    return size;
};
const size = Object.size(obj);
console.log(size);

出力結果

コンソールには次のように表示されます。

5

オブジェクトには5つのプロパティが定義されているため、正しく 5 が出力されました。

よりシンプルな代替案:Object.keys() を使う方法

ES5以降の環境であれば、Object.keys() メソッドを使うことで、さらに簡潔に同じ結果を得られます。このメソッドはオブジェクト自身の列挙可能なプロパティ名を配列として返すため、その配列の長さを取るだけでプロパティ数がわかります。

const size = Object.keys(obj).length;
console.log(size); // 5

Object.keys() は継承されたプロパティを含まないため、hasOwnProperty() のチェックも不要になり、コードが読みやすくなります。特別な理由がない限り、この方法が現在のベストプラクティスといえるでしょう。

  1. JavaScriptでオブジェクトのプロパティを削除する方法をわかりやすく解説

    JavaScriptでオブジェクトのプロパティを削除するには、delete演算子を使用します。delete演算子は、指定したオブジェクトからプロパティそのものを取り除き、削除に成功した場合はtrueを返します。以下に、オブジェクトのプロパティを削除するサンプルコードを示します。サンプルコード<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0

  2. JSONテキストをJavaScriptのJSONオブジェクトに変換する方法を解説

    JavaScriptでは、JSON.parse()メソッドを使用することで、JSON形式のテキスト文字列をJavaScriptオブジェクトへと変換できます。このメソッドは、APIから取得したデータやサーバーとの通信で受け取ったJSON文字列を、プログラム内で扱いやすいオブジェクトにパースする際に非常に重要な役割を果たします。 以下は、JSONテキストをJavaScriptオブジェクトに変換する具体的なコード例です。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /&