1. ホーム
  2. javascript

[解決済み] javascriptオブジェクトの要素数

2022-07-23 11:12:28

質問

javascriptオブジェクトの要素数を(どこかから)取得する方法はありますか?(すなわち、一定時間の複雑さ)。

私はその情報を取得するプロパティまたはメソッドを見つけることができません。今のところ、私はコレクション全体を通して反復を行うことしか考えられませんが、それは線形時間です。

オブジェクトのサイズに直接アクセスできないのはおかしいと思いませんか?

EDITです。

私が言っているのは Object オブジェクトについてです(一般的なオブジェクトではありません)。

var obj = new Object ;

どのように解決するのですか?

JSの実装では、内部的にそのような値を記録しているかもしれませんが、それを取得する標準的な方法はありません。

過去には、Mozilla の Javascript バリアントは 非標準の __count__ となっていましたが、バージョン1.8.5で削除されました。

クロスブラウザのスクリプティングでは、プロパティを明示的に反復してチェックし hasOwnProperty() :

function countProperties(obj) {
    var count = 0;

    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            ++count;
    }

    return count;
}

ECMAScript 5 対応の実装の場合、これは次のようにも書けます(Kudos to Avi Flax )

function countProperties(obj) {
    return Object.keys(obj).length;
}

列挙できないプロパティも見逃さないようにしましょう(例えば、配列の length ).

jQuery、Prototype、Mootools、$whatever-the-newest-hypeなどのフレームワークを使用している場合、それらが独自のコレクションAPIを備えているかどうかを確認してください。