[解決済み] オブジェクトの数をカウントするJavascript [重複]。
質問
のようなオブジェクトがありますね。
Object {0=Object, 1=Object, 2=Object} // Output from console.log(obj.Data);
しかし、オブジェクト内のオブジェクトの数を数え、最終的にサブオブジェクトから属性値を取得する方法はありません。
私が試したのは
console.log(obj.Data[0].length); // It does not work
console.log(obj.Data.length); // It does not work
これは私にとって少しトリッキーです。あなた方が助けてくれることを願っています。
どのように解決するのですか?
これを行う最も簡単な方法は、優れたパフォーマンスと新旧両方のブラウザとの互換性を持つ、次のいずれかを含めることです。 ローダッシュ または アンダースコア を追加してください。
次に
_.size(object)
または
_.keys(object).length
あなたの
obj.Data
でテストすることができます。
console.log( _.size(obj.Data) );
または
console.log( _.keys(obj.Data).length );
Lo-Dash と Underscore はどちらも優れたライブラリで、あなたのコードにとても役立つと思います。(それらは互いにかなり似ています。Lo-Dashはいくつかの利点がある新しいバージョンです)。
代わりに、オブジェクトのプロパティを単純にループしてカウントする、この関数をコードに含めることができます。
function ObjectLength( object ) {
var length = 0;
for( var key in object ) {
if( object.hasOwnProperty(key) ) {
++length;
}
}
return length;
};
でテストできます。
console.log( ObjectLength(obj.Data) );
しかし、このコードはモダンブラウザではそれほど高速ではありません。モダンブラウザでより速く、古いブラウザでもまだ動作するバージョンについては、使用することができます。
function ObjectLength_Modern( object ) {
return Object.keys(object).length;
}
function ObjectLength_Legacy( object ) {
var length = 0;
for( var key in object ) {
if( object.hasOwnProperty(key) ) {
++length;
}
}
return length;
}
var ObjectLength =
Object.keys ? ObjectLength_Modern : ObjectLength_Legacy;
で、前回同様、テストしてみましょう。
console.log( ObjectLength(obj.Data) );
このコードでは
Object.keys(object).length
を使用し、古いブラウザではループでカウントするようになります。
しかし、このような作業を行うのであれば、代わりにLo-DashやUnderscoreを使用し、これらのライブラリが提供するすべての利点を得ることをお勧めします。
私は jsPerf をセットアップして、これらのさまざまなアプローチの速度を比較しました。 . テストに追加するために、手持ちのブラウザで実行してみてください。
おかげさまで
Barmar
に対して
を示唆
Object.keys
新しいブラウザの場合
を提案しています。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] javascriptでオプションのパラメータを扱う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?