あしあと

明日の自分への情報発信

Javascript 学習 及び基本技術者試験テキストの読書

Javascript 1/2

 

繰り返し処理

 

繰り返し処理にはwhile(〜の間という意味)文を用いる。条件式がtrueの間は処理する、というような意味である。

f:id:keropp1234:20200102212314p:plain

 



 

条件式に、どこまで繰り返し処理するかという条件を定め、処理部分に繰り返し処理をしたいコードを書く、という流れになる。ちなみに下図でnumberを入力し続けると処理が終わらなくなり無限ループになる。

f:id:keropp1234:20200102212333p:plain



 

for文

繰り返し処理にはwhile文の他にfor(対称を求めて指さすイメージ)がある。

for()の中に「変数の定義」「条件式」「変数の更新」を打ち込むことで、While文に比べてシンプルに表記できるのがメリット(括弧の中はセミコロンで区切る。ただし変数の更新の背後にはつけないこと!)

f:id:keropp1234:20200102212342p:plain

 

f:id:keropp1234:20200102212400p:plain



ちなみにnumber += 1をnumber ++とも省略できる。これは-でも同じことが言える。

演習で出てきたif( number %3 === 0 )の意味は3で割り切れたとき(すなわち3の倍数の時)、の意味になる。

 

配列

複数の値をまとめて管理するための文が配列。[値1, 値2, 値3] のように作り、それぞれの値を要素という。定数は複数形にするのが一般的。

f:id:keropp1234:20200102212418p:plain



配列も一つの値なため、定数に代入数することができる。

f:id:keropp1234:20200102212426p:plain



 

要素の取得

配列の各要素にはインデックスが割り振られており、定数とインデックス[x]を組み合わせることで任意の要素を選択できる。

f:id:keropp1234:20200102212433p:plain



 

配列の更新

変数の更新のように、配列の更新もできる。

f:id:keropp1234:20200102212457p:plain

 

配列の繰り返し

要素が3つある場合、3回も出力するのは面倒なので、forの繰り返し処理で効率よく行える。

なお記号Iはindexの頭文字である。

下の画像のfor文は変数をiと定義し、iが3未満と条件式を作り、i+1の変数の更新と定めた繰り返し処理である。

f:id:keropp1234:20200102212509p:plain



length文

画像のように配列.lengthとすることで配列の要素数を取得できる(要素の端から端というイメージ)。

また上のfor文の条件式に使った3の部分をlength置き換えて出力することもできる。下画像ならばanimals.lengthとなる。

これにより数値の打ち間違いを避けることができる。

f:id:keropp1234:20200102212520p:plain



 

オブジェクト

オブジェクトとは複数の数値を管理するのに用いられる。配列が複数の値をまとめて管理するのに対し、オブジェクトは値ごとにプロパティと呼ばれる名前をつけて管理する。

中括弧で括り、プロパティと値はコロン:で繋ぐ。

f:id:keropp1234:20200102212530p:plain



オブジェクトは定数に代入することもできる。

f:id:keropp1234:20200102212539p:plain



 

オブジェクトの値を取り出すには対応するプロパティ名を用いて 「オブジェクト.プロパティ名」のようにする。画像ならitemがオブジェクト、nameがプロパティなので(item.nameとなる。)

f:id:keropp1234:20200102212548p:plain



 

「オブジェクト.プロパティ名 = 新しい値」とすることでオブジェクトの値を更新することもできる。

f:id:keropp1234:20200102212557p:plain



 

オブジェクトを要素に持つ配列

 

配列には値や文字列の他にもオブジェクトを用いることもできる。,(カンマで区切るのを忘れないように)

f:id:keropp1234:20200102212604p:plain



当然、配列なのでインデックスも割り振られる。

f:id:keropp1234:20200102212613p:plain



さらにオブジェクトの中の値だけを抜き出したいときは配列の定数名.[index].値で出力できる。これまでの知識の組み合わせなだけなので複雑に考えることもない。

f:id:keropp1234:20200102212621p:plain



 

オブジェクトの配列の繰り返し処理

ーーーーーーーと名前および年齢が繰り返し処理されている。characterと定義することでシンプルになっているが、その部分を消去してcharacters[i]でも出力しても問題はない。

f:id:keropp1234:20200102212629p:plain



 

定義されていない要素(undefined)

定義付けされてないインデックスを指定して出力された場合、undefinedと出力される。

f:id:keropp1234:20200102212637p:plain



 

しかし、if else文を使えば、undefinedと表示されたときに別の表現方法で表示することが可能になる。

 

f:id:keropp1234:20200102212644p:plain



 

複雑なオブジェクトを呼び出すときも、オブジェクト名.プロパティ.プロパティで呼び出せる。一見服雑だが基本は同じである。

f:id:keropp1234:20200102212654p:plain



f:id:keropp1234:20200102212702p:plain



 

配列内のオブジェクト内に配列を作ることもできる。

f:id:keropp1234:20200102212710p:plain



 

[]は要素を宣言するときに使う。一つ一つにindex番号が割り振られるようになる。

上の画像のfoodはその典型である。

一方、{opening: "10:00(AM)”}のようなものはオブジェクトなので、コロンを使い、プロパティと値に分かれる。

 

つまり、配列はindexを参照し、要素はプロパティを使って参照する。

どちらを使うかは状況次第となる。

例えば、数値だけが順番にならんでいるようなデータなら配列が適切である。

ID、名前、住所、電話番などのデータをまとめて扱うならオブジェクトが適切(属性を表現できるため)