次のようにJavascriptで連想配列を作り、そのサイズを取得してみる
var G = {
gundam : 'アムロ',
guncanon : 'カイ',
guntank : 'ハヤト'
};
console.log(G.length); //undefined
ところがこの結果は「undefined」になってしまう。
連想配列にlengthプロパティがない事が直接の原因だが、連想配列のサイズを知りたいときはどうすればいいのだろうか。
答えは、「Object.keys(連想配列).length」 または 「Object.values(連想配列).length」 または 「Object.entries(連想配列).length」 を使う。
var G = {
gundam : 'アムロ',
guncanon : 'カイ',
guntank : 'ハヤト'
};
console.log(Object.keys(G).length); //3
console.log(Object.values(G).length); //3
console.log(Object.entries(G).length); //3
どれも同じ値を返す。
要素数を知りたいだけなら「Object.keys(obj)」を使えばいいと思う。各要素のキーや値を知りたいときはきちんと使い分けする。
参考:
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/values https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries