JavaScriptで連想配列の要素数を取得する方法

javaScriptで連想配列の要素数を取得する方法

JavaScriptで連想配列の操作方法を調べたので、メモしておきます。

JavaScriptで連想配列の要素数を取得する方法

JavaScriptの連想配列の要素数は、下の方法で取得できます。

連想配列の要素数を取得

const 連想配列の要素数 = Object.keys(連想配列).length

連想配列はArrayオブジェクトを継承していないのでlengthプロパティを持っていないため、連想配列.length のように直接lengthで取得ができないのです。

Object.keys()は引数の連想配列のキーの配列を戻してくれるメソッドです。Object.keys()でキーの配列を取り出し、lengthプロパティで連想配列の要素数を取得しています。

JavaScriptの配列と連想配列の違いを整理すると分かりやすいです。

JavaScriptでは連想配列はオブジェクトという

JavaScriptで連想配列を操作する方法を調べようとして、検索キーワードに迷いました。JavaScriptには「連想配列」という表現は存在しません。

JavaScriptでは連想配列を「オブジェクト」といいます。JavaScriptの配列では、値に関数も入れられるのでオブジェクトというのですね。

JavaScriptではウィンドウ(ブラウザ)やドキュメント(表示領域)、HTML要素や属性など、その他多くのプログラム対象がオブジェクトとなります。

配列はリスト化された変数

「配列」とは複数の変数がリスト化されたもので、順序つきで保存されるデータのまとまりです。一般的な配列は、インデックス番号(添字)と呼ばれる0から始まる数字が自動的に割り振られます。

JavaScriptでは配列を下のように定義します。

配列の定義

【リテラル記法】
const 配列名 = [値1, 値2, 値3…];

【Arrayコンストラクター】
const 配列名 = new Array(値1, 値2, 値3…);

連想配列とJavaScriptでの定義方法

連想配列は自動的に割り振られるインデックス番号をキーとして持つかわりに、任意の文字列をキーとして指定します。

キーを指定することで、何が格納されているかが分かりやすい(連想しやすい)配列です。JavaScriptでは連想配列を下のように定義します。

連想配列の定義

【リテラル記法】
const 連想配列名 = {キー1:値1, キー2:値2, キー3:値3…};

【Objectコンストラクター】
let 連想配列名 = new Object();
連想配列名.キー1 = 値1;
連想配列名.キー2 = 値;

のように追加できます。

一般的な配列は new Arrayで生成するのに対し、連想配列は new Objectです。連想配列はArrayオブジェクトを継承していないので、Arrayオブジェクトのメソッドやプロパティは使えないのですね。

JavaScriptで連想配列を操作してみた

では要素数の取得以外にも、連想配列を操作してみましょう。

連想配列の値を取得する方法

連想配列の値はキーを指定して取得します。「連想配列名.キー」や「連想配列名[‘キー’]」の構文で取得できます。

値を取得する例

const person = {name: ‘山田太郎’, sex: ‘男’, age: 20, };
let name = person.name;
または
let name = person[‘name’];

連想配列のメソッドを使ってのキーや値を取得する方法

先頭の「連想配列の要素数を取得する方法」でも使いましたが、Object.keys()メソッドで連想配列のキーの配列を取得できます。

キーを取得する例

const person = {name: ‘山田太郎’, sex: ‘男’, age: 20, };
console.log(Object.keys(person));

コンソールには name, sex, age のように表示されます。

値の配列はObject.values()メソッドで取得できます。

値を取得する例

console.log(Object.values(person));

コンソールには ‘山田太郎’, ‘男’, 20 のように表示されます。

Object.entries()メソッドを使うと[キー、値]の配列を取得できます。

キーと値の配列を取得する例

console.log(Object.entries(person));

コンソールには下のように表示されます。
(3) [Array(2), Array(2), Array(2)]
0:(2) [‘name’, ‘山田太郎’]
1:(2) [‘sex’, ‘男’]
2:(2) [‘age’, 20]

ループ処理を使って取得する方法

連想配列のキーや値を全て取得するには、for inを使って要素をループさせます。

// 連想配列のキーや値をループで取得する例
const person = {name: '山田太郎', sex: '男', age: 20, };
for(const key in person) {
  console.log( key );  //キー
  console.log( person[key] );   //値
}

jQueryを使うと次の方法で取得できますね。

// jQueryではこんなふうに取得できる
$.each(person, (key, val) => {
  console.log( key );   //キー
  console.log( val );   //値
});

まとめ

  • JavaScriptの連想配列の要素数は「Object.keys(連想配列).length」で取得できる。
  • JavaScriptでは連想配列はオブジェクトで、Arrayは継承していない。

一般的な配列と連想配列の違いを確認することで、配列や連想配列の理解が深まりました。今後も操作方法を追記していきます。