カテゴリー
JavaScript

様々なオブジェクト(Arrayオブジェクト)について知ろう3

この章ではArrayオブジェクトについて説明します。
Arrayオブジェクのプロパティやメソッドで配列に対して様々な操作を行うことが出来ます。
配列の要素の順番を変えたりするプロパティやメソッドについて説明します。1 length プロパティは配列の最後の添え字に1を足した数を返します。
では例をみてみましょう。11 1=>添え字に1を足した数を返すと書きましたが、簡単に言いますと要素の数です。
要素の数は5個なので、5を返します。

1=>「配列.length =数;」と言う形式で記述すると配列の要素を増やしたり、減らしたりすることが出来ます。
この例の場合は配列の要素を2つ増やして、7にしています。
追加した残りの要素には何も入っていないので、
1と、出力すると結果は
undefined
undefined
です(未定義値)。
逆にperson1.length=2;と、要素数を減らすと残りの要素は無くなってしまいますので、for文で取り出すと
結果は
kondou
shimizu
です。1 toStringメソッドはArrayオブジェクトを文字列に変換します。
配列の要素を「,」で繋げた形で出力されます。
では例をみてみましょう。1 結果は以下の通りです。11 joinは配列の要素を指定した区切り文字で区切って繋げてくれます。
例の場合は「@」で区切っています。
では例をみてみましょう。1 結果は以下の通りです。1 以下のようにjoinのカッコの中をカラにしますと、「,」で連結されます。
person1.toString()と同じ結果になります。1 結果は2つとも以下の通りです。11 sortメソッドはArrayオブジェクトをアルファベットの順番に変えます。
では例をみてみましょう。1 結果は上から以下のように出力します。11 アルファベットを使った配列の場合はアルファべット順に変えてくれるので問題ないですが、
1のように要素が数字の場合は数字の順番に並べてくれるわけではないので、気を付けてください。1 reverseメソッドはArrayオブジェクトを現在の要素と逆順に変えます。
では例をみてみましょう。1 結果は上から以下のように出力します。11 sliceメソッドは配列の要素を取り出します。
では例をみてみましょう。1 以下に開始位置、終了位置の数え方を書きます。
終了位置は指定した位置の一つ前までになります。
0番目 kondou 
1番目 shimizu 
2番目 honda
3番目 doumoto
4番目 inukai
結果は上から以下の通り出力します。11 =>spliceは開始位置から数えて何個置換するか決めて、それを置換文字列で置き換えます。
1=>開始位置から何個削除するか指定すると、その要素が削除されます。
では例をみてみましょう。1 では説明を始めます。1 1切り取った要素はこの例のsのように受け取ることが出来ます。1 3個切り取ったのに、2個しか代わりに入れなかった場合には要素数が1つ減ることになります。
逆に3個切り取って、代わりに4個入れた場合は要素数が1つ増えることになります。
結果は上から以下の通り出力します。11 popメソッドは、配列の一番後ろの要素を削除します(要素の数は1つ減る)。
では例をみてみましょう。1 結果は上から以下の通り出力します。1 削除したものを受け取りたい場合は1のように変数で受け取ります。
最後に1と、出力すると末尾のinukaiが削除された状態で出力されているのが解ると思います(元の配列も実際に削除されます)。1 pushメソッドは、配列の末尾に要素を追加します(追加した分、要素数は増えます)。
カンマで区切れば、いくらでも要素を追加することが出来ます。
では例をみてみましょう。1 結果は上から以下の通り出力します。1 要素数を受け取りたい場合は1のように変数で受け取ります。
この例の場合は4です。
つまり、pushメソッドの戻り値は要素数です。
1を出力するとkonno,hiroが追加されているのがわかります。1 shiftメソッドは、配列の一番前の要素を削除します(要素の数は1つ減ります)。
では例をみてみましょう。1 削除した要素を受け取りたい場合は1のように変数で受け取ります。
1で出力すると実際にkondouが削除されて出力されているのが解ります。
結果は上から以下の通り出力します。11 unshiftメソッドは、配列の一番前に要素を追加します(追加した分、要素数は増えます)。
カンマで区切れば、いくらでも追加することが出来ます。
では例をみてみましょう。1 要素数を受け取りたい場合は1 のように変数で受け取ります。この例の場合は7です。
つまり、unshiftメソッドの戻り値は要素数です。
1で出力するとyumenoとnakataが追加されているのがわかります。1 例えば以下のsliceメソッドは文字を取り出していますが、これは元の配列には影響しませんが、上のpopメソッドなどは実際の配列まで変化します。1 上から出力すると以下の通りに出力しますが、途中で取り出しても最初と最後の配列の要素が変わっていないことが分かります。1

カテゴリー
Perl

配列の関数について知ろう

この章では配列の関数について説明します。
関数は入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。
このデータは引数と呼ばれています。1 引数1は第1引数、引数2は第2引数と言います。
ここでは第2引数までしか書いていませんが引数3、引数4と続きます。
引数の数は関数によって違います。
では関数についてさらに詳しく説明します。
「Perlの基礎を知ろう」の章では関数については以下の通り説明しました。
Perlの関数の仕組みはエクセルの関数の仕組みと意味は同じです。エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Perlには初めからこのように機能が定義されている関数が多数ありますので、配列に関係する関数を取り上げたいと思います。
printは出力する関数でしたが、配列の関数は配列のデータの順番を変えたりする便利な関数が多数ありますので、次で紹介します。1 join関数は配列を指定した区切り文字で連結して、その結果を戻り値として返します。1 結果は以下の通りです。
「猫と犬とライオンと象とネズミ」
色々区切り文字を入れて試してみてください。1 shift関数は配列の先頭の要素を切り取って、その切り取った要素を返します。1 $rには取り除いた要素である猫が代入されています。取り除かれた後の配列の要素は改めて添え字が振り直されますので、添え字の先頭は犬になります。1 1unshift関数は配列の先頭に要素を追加します。1 $rには要素追加後の要素数が入りますので6が代入され、@animalは蛙を先頭に追加したので1となります。1 pop関数は配列の末尾のデータを取り除きます。1 $pには取り除いた要素であるネズミが代入され、@animalはネズミが取り除かれていますので1となります。1push関数は配列の末尾にデータを追加します。1 $tには要素追加後の要素数が入りますので6が代入され、@animalは蛇を末尾に追加したので1となります。
1sort関数は氏名やID番号などのデータをアルファベット順や番号順などで並び替える時に使います。
次の通り、sortの基本構文は複数ありますが、順番に説明していきます。1 11結果は以下の通りです。
「E a b c d f」
標準の文字列比較の順番で文字が昇順に並び替えられます。
順序は
〇abc順
〇大文字は小文字より前
〇数値はアルファベットより前という法則で決まります。
1文字を昇順で比較したい場合は上の構文を使用します。
cmpは文字コードで比較するときに使う演算子です。1 結果は以下の通りです。
「a b c d e f」
1数値が1番前に来ているのが分かります。
1文字コードの降順で比較したい場合は上の構文を使用します。
「sort { $a cmp $b } 配列;」との違いは$aと$bの位置です。
1結果は以下の通りです。
「f e d c b a」
1数値を昇順、つまり123順で比較したい場合は上の構文を使用します。
cmpは文字コードで比較するときに使う演算子でしたが、1は数値で比較するときに使う演算子です。1 結果は「0 2 3 4 7」です。
1数値を降順で比較したい場合は上の構文を使用します。
sort { $a <=> $b } 配列;との違いは$aと$bの位置です。
1結果は「7 4 3 2 0」です。
1reverse関数は引数に指定した配列に含まれる要素を逆に並べた配列を返します。
1結果は以下の通りです。
2 0 7 3 4
f d E a c b
1しかし、splice関数を使用すれば配列の先頭もしくは末尾以外から要素を取り出すことが可能になります。
splice関数には幾つかの構文があります。1 添え字で指定した箇所から末尾までを削除した配列を返します。
1この例ではsplice関数の第2引数が1なので、配列の犬から末尾までの要素が削除対象になります。
@seには配列の中の削除した要素が代入されていますので、
結果は1です。
@animalには削除後の要素である猫が入っています。
1配列の先頭から末尾までを削除したリストを返します。
1この例ではsplice関数の第2引数を指定していないので、配列のすべての要素が削除対象になります。
@seには配列の中の削除した要素が代入されていますので、
結果は1です。
@animalにはすべてを削除したので何も残っていません。
1添え字で指定した箇所から指定した数だけ削除したリストを返します。
1この例ではsplice関数の第2引数に1を指定しているので犬から2個削除した配列を返します。
@seには配列の中の削除した要素が代入されていますので、結果は1です。
@animalには削除後の要素である1が入っています。
1添え字で指定した箇所から指定した数だけ削除して、その削除した箇所に新たなリストを加えます。
そしてその削除した要素を返します。
1この例ではsplice関数の第2引数に1を指定しているので犬から2個削除してから、その削除した箇所に@animal2の要素を加えます。
@seには配列の中の削除した要素が代入されていますので、結果は「犬 ライオン」です。
@animalには削除した箇所に龍、ネッシーを加えているので、1になります。