JavaScriptの配列 ( array ) を理解する

プログラミング
ほぼ全てのプログラミング言語が有する配列という概念ですが、JavaScriptではこれをどのようして作成し、操作するのでしょうか。今回は、配列の作成方法や値の取り出し方、その他各種配列操作メソッドについて、実際のコードを通して解説をしていきます。
JavaScriptの配列 ( array ) を理解する

多くのプログラミング言語に共通する基本概念のひとつとして「配列」があります。データをある種のまとまりとして操作することが出来る「配列」はプログラミングにおいて欠かせない存在です。
今回はJavaScriptの配列について、その作成や操作の方法を実際のコードと共に解説していきます。

JavaScriptの配列について ( array )

配列とは端的に表現すると「データのまとまり」です。どのプログラミング言語にも存在する配列ですが、その記法や操作方法は各言語ごとに異なります。

配列を作成する ( new array( ) )

はじめに、配列の作成を解説します。 JavaScriptにおいて、配列の作成は次のように記述します。

<script>
var arr = new array()
</script>

ここで登場した new array()コンストラクタ と呼ばれるものです。
コンストラクタは オブジェクトを新規作成する という機能を持ちます。この場合は arrayクラスのオブジェクトを新規作成しています。 arrayクラス とはJavaScriptにおける 配列 のデータ型を意味します。

また new array() を用いないシンプルな記述方法も存在します。

<script>
var arr = []
</script>

[] (中括弧)空の配列のオブジェクト を示します。 また、 [] 空の配列 ですが、次のように記述することで 中身の存在する配列 を最初から作り出すことが出来ます。

<script>
var arr = [“い”, “ろ”, “は”, “に”]
</script>

これで、中身が順に “い”, “ろ”, “は”, “に” である配列が作成されました。


配列の要素を取り出す ( array[...] )

次に作成した配列の要素を取り出すコードを記述します。

<script>
var arr = [“い”, “ろ”, “は”, “に”]
console.log( arr[0] ) // 出力結果:い
</script>

console.log() の括弧内に arr[0] という記述があります。
これは 配列arr の 0 番目の要素 を示します。なお配列は 先頭を0番 として数えます。
1番ではない ことに気を付けてください。したがってこの場合だと、配列の0番目なので がコンソールに出現されるます。


配列の要素数を求める ( array.length )

次に配列の持つ要素の数を求めます。
全ての配列は自身のプロパティとして 配列の要素数 を持っています。
プロパティ名 length配列の要素数 にあたります。
配列名.lengthその配列のlengthプロパティの値 を取得します。

<script>
var arr = [4, 5, 2, 3]
var len = arr.length
console.log( len ) // 出力結果:4
</script>

JavaScriptの配列を操作する

ここまでの解説で 配列の作成 要素の取り出し 要素数の取得 を紹介しました。次は配列自身に用意されている様々なメソッドについて紹介していきます。

配列の末尾に要素を追加する ( array.push() )

作成した配列に要素を追加する方法を紹介します。

末尾への要素追加メソッド push() メソッド は次のように記述します。

<script>
var arr = [4, 5, 2, 3]
arr.push(10)
console.log( arr[4] ) // (出力結果:10)
</script>

arr.push(10)配列arrの末尾に 10 を追加する という意味です。
コンソールには 配列arr の要素番号4番 の値、つまりpushメソッドで末尾に追加した 10 が表示されます。
※要素番号が 0番 から始まることに気を付けてください。


配列の先頭に要素を追加する ( array.unshift( ) )

次は先ほど紹介したpushメソッドとは真逆の 配列の先頭に要素を追加する メソッドを解説します。名前は unshift() メソッド です。
使用方法はpushメソッドと同様です。

異なるのは括弧内(引数)の値を配列の末尾ではなく 先頭 に追加することのみです。

<script>
var arr = [4, 5, 2, 3]
arr.unshift(10)
console.log( arr[0] ) // (出力結果:10)
</script>

配列の要素をループさせる ( array.forEach( ) )

配列の要素を全て取り出すまでループさせる メソッドとして、forEachメソッドがあります。これは以下のように使います。

<script>
var arr = [4, 5, 2, 3]
arr.forEach(function(value, index) {
  console.log(“要素番号:” + index)
console.log(“要素の値:” + value)
})
</script>

これが、forEachメソッドを用いたループ処理です。
順を追って説明しましょう。まず、4, 5, 2, 3を順に格納した配列を作成しました。

次に、作成した配列のforEachメソッドを使用します。forEachメソッドは、前述の通り配列の要素を全て取り出すまでのループ処理を行うものですが、具体的にどのように行われているのでしょうか。

こちらについて、forEach() の括弧内に注目してください。
forEachの括弧内(引数内)に関数(function)が渡されています。これは 取り出した配列の要素1つひとつに対して実行する関数 です。
このような メソッドや関数に渡されて実行される関数 のことを コールバック関数 と呼びます。

今回のforEachメソッドのコールバック関数には 引数がふたつ 用意されています。最初の引数は、配列の要素の値を示します。
次の引数は、配列の要素番号を示します。今回は、これら要素の値と要素番号をコンソールに出力するよう、コールバック関数を定義しています。

上記コードを書いたHTMLファイルを実際にブラウザ上で表示させてみてください。配列の最初の要素から最後の要素まで、順にコールバック関数が実行されているのがコンソール画面から確認できるはずです。


配列の要素を検索する ( array.find( ) )

最後に、配列の要素を検索するfindメソッドを紹介します。

先ほどのforEachメソッドでは コールバック関数 を引数として持ちました。findメソッドも同様に、コールバック関数を引数に持ちます。
使い方は以下の通りです。

var arr = [4, 5, 2, 3]
var result = arr.find(function(value) {
  if (value < 3) {
    return true
  } else {
    return false
  }
})
console.log(result) // (出力結果:2)

findメソッドの実行結果を変数resultに格納し、コンソールに出力させました。出力された値は 2 です。どのようにして、このresultの値が2になったのでしょうか?

解説すると、まずfindメソッドは コールバック関数でtrueを返した要素の値を返却する という仕組みになっています。言い換えると コールバック関数で検索条件を指定 して 検索結果をfindメソッドの返却値として返す 処理であるということです。

そして、今回コールバック関数では value が 3 より小さい場合はtrueを返却する という条件が指定されています。なお、この場合の value は配列の要素を示します。作成した配列のうち、唯一値が3よりも小さい 2 がfindメソッドの返却値として変数resultに格納されたというわけです。

まとめ

いかがでしたでしょうか。他にもJavaScriptの配列操作系メソッドには様々なものが用意されています。特に後半で紹介したforEachメソッドやfindメソッドといった コールバック関数 を引数として持つメソッドは、少々特殊なので、自ら何度かコードを実行させてみることが大切です。


TECH PLAYでは、エンジニアの方向けに勉強会・イベント情報を提供しています。
ご興味のある方はぜひご参加ください。