配列の要素を削除する
様々なプログラムで利用される「配列」。ActionScript3.0でも例に漏れずよく使われます。
今回は、この配列の要素を削除する方法に関する問題を出題します。
調べればすぐにわかってしまうので、小問を4つ用意しました。
<問題>
次のような配列が用意されているとします。
1 | var arr: Array = new Array ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ); |
このとき、下記の処理を実行しなさい。
1.配列の先頭の1要素を削除する。
2.配列の末尾の1要素を削除する。
3.配列の3番目の要素から5要素分を削除する。
4.配列の全要素を削除する。
答えは以下です。
↓
↓
↓
<答え>
~~~~~
1.
1 2 3 4 | var shift_el: int ; shift_el = arr.shift(); trace ( "削除後の配列:" +arr); trace ( "削除した要素:" +shift_el); |
2.
1 2 3 4 | var pop_el: int ; pop_el = arr.pop(); trace ( "削除後の配列:" +arr); trace ( "削除した要素:" +pop_el); |
3.
1 2 3 4 | var splice_arr: Array ; splice_arr = arr.splice( 2 , 5 ); trace ( "削除後の配列:" +arr); trace ( "削除した要素の配列:" +splice_arr); |
4.
1 2 | arr.length = 0 ; trace ( "全削除できたか確認:" +arr); |
※それぞれ他のやり方もありますが、今回は各問異なる関数・方法を解答としています。
~~~~~
4は面白いやり方ですね。
3同様にsplice関数を用いて全要素を削除するのももちろんOKですが、
lengthを0にすることで、全要素を削除することもできるのです。
関数を用いるのではなくプロパティを変更するという、ちょっとスマートな手法です。
配列を初期化するようなときに使ってみてください。
☆補足☆
3つめの問題で出てきたsplice関数についてもう少し詳しく記載しておきましょう。
splice関数は和訳すると「接合」「より継ぎ」といった意味であり、削除するという意味合いではありません。このことから分かるように、splice関数は本来、削除するための関数ではありません(・・多分)。配列の任意の箇所に任意の要素を挿入し、配列の間の「継ぎ目」となるような、そんなイメージになります。
先ほどの配列
1 | var arr: Array = new Array ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ); |
で考えてみましょう。
・2番目と3番目の要素の間に3要素を挿入するときには、次のように記述します。
1 2 | arr.splice( 1 , 0 , "追加1" , "追加2" , "追加3" ); trace (arr); |
traceの結果は次のようになるはずです。
1 | 0 ,追加 1 ,追加 2 ,追加 3 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 |
・4,5,6番目の要素を追加の3要素で差し替えるには、次のように記述します。
1 2 | arr.splice( 3 , 3 , "追加1" , "追加2" , "追加3" ); trace (arr); |
traceの結果は次のようになるはずです。
1 | 0 , 1 , 2 ,追加 1 ,追加 2 ,追加 3 , 6 , 7 , 8 , 9 |
上記例をまとめると、各引数の意味は以下のようになります。
・第一引数:追加or差し替え開始位置(1つ目の要素を位置0とする)
・第二引数:追加位置から削除する長さ。0の場合は削除はなく、第三引数の挿入のみとなる。
・第三引数~:追加or差し替えする値(複数指定可)
このように、splice関数は「削除」「追加」「差し替え」といった処理を行うことができるとても便利な関数です。
問題で行った「削除」は「指定した要素を空で差し替える=削除する」といったイメージで捉えるのがこの関数の性質に則しているといえるでしょう。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載