[解決済み】JavaScriptのオブジェクトの長さ
2022-03-18 19:15:05
質問
JavaScriptのオブジェクトを持っています。このオブジェクトの長さを取得するための組み込みの方法、または受け入れられているベストプラクティスの方法はありますか?
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
解決方法は?
回答を更新しました
ここでは、2016年時点の最新情報と
ES5を広く普及させる
とそれ以降をご紹介します。
IE9+やその他すべてのモダンなES5+対応ブラウザの場合は
Object.keys()
となり、上記のコードになるだけです。
var size = Object.keys(myObj).length;
これは、既存のプロトタイプを変更する必要はありません。
Object.keys()
はビルトインになりました。
編集 : オブジェクトは、Object.keyメソッドで返すことができないシンボリックプロパティを持つことができます。そのため、それについて言及しないと、回答が不完全になります。
Symbol型は、オブジェクトのプロパティにユニークな識別子を作成するために言語に追加されました。Symbol型の主な利点は、上書きを防止できることです。
Object.keys
または
Object.getOwnPropertyNames
はシンボリックプロパティには使えません。それらを返すには
Object.getOwnPropertySymbols
.
var person = {
[Symbol('name')]: 'John Doe',
[Symbol('age')]: 33,
"occupation": "Programmer"
};
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // 1
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // 2
古い回答
最も堅牢な(つまり、最も少ないバグを引き起こしながら、やろうとしていることの意図を捉える)答えは、次のようになります。
Object.size = function(obj) {
var size = 0,
key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// Get the size of an object
const myObj = {}
var size = Object.size(myObj);
JavaScriptでは、ある種の慣習として Object.prototype に何かを追加してはいけません。 なぜなら、様々なライブラリの列挙を壊してしまう可能性があるからです。オブジェクトにメソッドを追加することは、通常は安全です。
関連
-
[解決済み] テスト
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] 2つの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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】オブジェクトの長さを取得する方法【重複あり