Web制作、Web開発の歩き方

JavaScriptのきほんを学ぼう

■第20話:高度な連想配列操作

(最終更新日:2023.05.05)

JavaScriptの猫
この記事は5分で読めます!
(絵が小さい場合はスマホを横に)

「繰り返し処理をスムーズに」

配列操作と同様に、連想配列操作も繰り返し処理を用いて、 APIなどから取得したデータをスムーズにUIに反映することが求められる。 今回は、そんな連想配列の操作について紹介する。


1. 連想配列の繰り返し処理

JavaScriptの連想配列で繰り返し処理を行う方法について説明する。主に3つの方法がある。 一番目はfor...inループを使用する方法で、連想配列のキーの数だけ繰り返し出力できる。 書き方は以下の通りとなり、ブラケット記法で出力する。

for...inループ

for...inループ

二番目はObject.keys()とforEach()を使用する方法である。 Object.keys()を使ってオブジェクトのキーを配列として取得し、その配列に対してforEach()を使って繰り返し処理する。

ObjectKeys

Object.keysを用いた方法

三番目はObject.entries()とforEach()を使用する方法である。 Object.entries()を使ってオブジェクトのキーと値のペアを二次元配列として取得し、その配列に対してforEach()を使って繰り返し処理する。

メソッド

Object.entriesを用いた方法

これらの方法を使用して、連想配列(オブジェクト)の繰り返し処理を行うことができる。 どの方法を選択するかは、開発者の好みや状況によって異なるが、 Object.entries()とforEach()の組み合わせはキーと値の両方を独立して取得できるため、非常に便利だ。

2. 連想配列のマージとコピー

このセクションでは、JavaScriptにおける連想配列(オブジェクト)のマージ(結合)とコピー方法について説明する。 連想配列のマージは、Object.assign()メソッドを使用して行うことができる。以下の通りである。 引数に空のオブジェクト、連結する2つのオブジェクト指定することで、マージしている。

indexofメソッド

assignメソッド

続いて、スプレッド構文(...)を使用して、複数のオブジェクトをマージ(結合)する方法を紹介する。 配列の時とほぼ同様の書き方になる。スッキリと非常に見やすく書くことができる。

findメソッド

スプレッド構文による方法

続いて、連想配列のコピーについても説明する。 ネストのないオブジェクトに対してコピーを行う場合は、マージで説明したObject.assign()メソッド、スプレッド構文、どちらも使うことができる。 copiedObj1がassign、copiedObj2がスプレッド構文を用いた方法である。

Shallow Copy

ネストのない浅いコピーを行う場合

ネストのあるオブジェクトに対してコピーを行う場合、JSON.parse()とJSON.stringify()を組み合わせて使用する。 下記のように処理を行うことで、ネストのある深いオブジェクトに対しても、コピーが可能となる。

filterメソッド

ネストのある深いコピーを行う場合

これらの方法を使用して、連想配列(オブジェクト)のマージやコピーを行うことができる。 ただし、深いコピーの場合、JSON.parse()とJSON.stringify()の組み合わせは、オブジェクト内に関数やシンボル、 循環参照が含まれる場合にはうまくコピーできないことがあるので注意が必要だ。 これらのコピーを行う場合は、専用のライブラリを用いる。ここでは、これ以上説明しないが、興味がある人は是非調べてみよう。

3. まとめ

今回、連想配列の繰り返し処理、コピーについて説明した。 前回に引き続き、連想配列の操作としては、非常に良く使う基本的な操作となる。 まずは、この部分をしっかり抑えて、データを処理できるようになろう。


▼参考図書、サイト

【JavaScript】Object.assignを理解する  REFFECT
【JS】Objectをループ処理はObject.entries()が便利   muoilog