JavaScript オブジェクトがあります。このオブジェクトの長さを取得するための組み込みの方法、または認められたベスト プラクティスの方法はありますか?
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
ベストアンサー1
更新された回答
2016年現在の最新情報はこちらES5の広範な導入IE9以降およびその他最新のES5+対応ブラウザでは、Object.keys()
したがって、上記のコードは次のようになります。
var size = Object.keys(myObj).length;
Object.keys()
は組み込まれているため、既存のプロトタイプを変更する必要はありません。
編集: オブジェクトには、Object.key メソッドでは返されないシンボリック プロパティがある場合があります。そのため、それらについて言及しないと回答は不完全になります。
シンボル タイプは、オブジェクト プロパティの一意の識別子を作成するために言語に追加されました。シンボル タイプの主な利点は、上書きを防止できることです。
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に何かを追加しないでくださいさまざまなライブラリの列挙が壊れる可能性があるためです。ただし、Object にメソッドを追加することは通常安全です。