ActionScript3.0 ぷちクイズ 第5問:配列の要素を削除する


配列の要素を削除する

様々なプログラムで利用される「配列」。ActionScript3.0でも例に漏れずよく使われます。
今回は、この配列の要素を削除する方法に関する問題を出題します。
調べればすぐにわかってしまうので、小問を4つ用意しました。

<問題>
次のような配列が用意されているとします。

var arr:Array =   new Array(0,1,2,3,4,5,6,7,8,9);

このとき、下記の処理を実行しなさい。
1.配列の先頭の1要素を削除する。
2.配列の末尾の1要素を削除する。
3.配列の3番目の要素から5要素分を削除する。
4.配列の全要素を削除する。

答えは以下です。



<答え>
~~~~~
1.

var shift_el:int;
shift_el = arr.shift();
trace("削除後の配列:"+arr);
trace("削除した要素:"+shift_el);

2.

var pop_el:int;
pop_el = arr.pop();
trace("削除後の配列:"+arr);
trace("削除した要素:"+pop_el);

3.

var splice_arr:Array;
splice_arr = arr.splice(2,5);
trace("削除後の配列:"+arr);
trace("削除した要素の配列:"+splice_arr);

4.

arr.length = 0;
trace("全削除できたか確認:"+arr);

※それぞれ他のやり方もありますが、今回は各問異なる関数・方法を解答としています。
~~~~~

4は面白いやり方ですね。
3同様にsplice関数を用いて全要素を削除するのももちろんOKですが、
lengthを0にすることで、全要素を削除することもできるのです。
関数を用いるのではなくプロパティを変更するという、ちょっとスマートな手法です。
配列を初期化するようなときに使ってみてください。

☆補足☆
3つめの問題で出てきたsplice関数についてもう少し詳しく記載しておきましょう。
splice関数は和訳すると「接合」「より継ぎ」といった意味であり、削除するという意味合いではありません。このことから分かるように、splice関数は本来、削除するための関数ではありません(・・多分)。配列の任意の箇所に任意の要素を挿入し、配列の間の「継ぎ目」となるような、そんなイメージになります。

先ほどの配列

var arr:Array =   new Array(0,1,2,3,4,5,6,7,8,9);

で考えてみましょう。

・2番目と3番目の要素の間に3要素を挿入するときには、次のように記述します。

arr.splice(1,0,"追加1","追加2","追加3");
trace(arr);

traceの結果は次のようになるはずです。

0,追加1,追加2,追加3,1,2,3,4,5,6,7,8,9

・4,5,6番目の要素を追加の3要素で差し替えるには、次のように記述します。

arr.splice(3,3,"追加1","追加2","追加3");
trace(arr);

traceの結果は次のようになるはずです。

0,1,2,追加1,追加2,追加3,6,7,8,9

上記例をまとめると、各引数の意味は以下のようになります。

・第一引数:追加or差し替え開始位置(1つ目の要素を位置0とする)
・第二引数:追加位置から削除する長さ。0の場合は削除はなく、第三引数の挿入のみとなる。
・第三引数~:追加or差し替えする値(複数指定可)

このように、splice関数は「削除」「追加」「差し替え」といった処理を行うことができるとても便利な関数です。
問題で行った「削除」は「指定した要素を空で差し替える=削除する」といったイメージで捉えるのがこの関数の性質に則しているといえるでしょう。

  • このエントリーをはてなブックマークに追加

PAGE TOP