概要
for文と言えば for(i=1; i<=10; i++){
みたいなのだと思っていたけど、何やら種類があるらしい・・・。
「for文」「for...of文」「for...in文」「forEach文」とまとめたところ、長くなったので①②に分割。
ただのfor文
いつもの見慣れたやつから。
function minaretaYatsu() {
for(var i=1; i<=5; i++){
Logger.log(i);
}
for(var j=1; j<=5; j++){
i = j * 5;
Logger.log(i);
}
}
for(var i=1; i<=5; i++){
すなわち、i=1 から i が 5 以下の間 i に 1 ずつ足しながら繰り返す。結果はこの通り。
1つ目の繰り返しで、1~5までを出力。2つ目では、それぞれを5倍して出力している。
後に出てくるfor文と違い、繰り返しの中で条件に干渉できる。
例えば、2つ目の繰り返しで、i=j*5
を j=j*5
にすると、1周目で j が 5 になるので2周目に突入できない。他にも、breakやcontinue、returnなどとても便利。
※この後に出てくる他のfor文は中断できない。
やっぱりfor文、そこにシビれる!あこがれるゥ!
for...of文
例として1~5が入った配列を用意。
function forOf() {
var array = [1, 2, 3, 4, 5];
for(var i of array){
Logger.log(i);
}
for(var j of array){
j = j * 5;
Logger.log(j);
}
}
配列の要素を順番に、任意の変数へ与えてくれる。
この場合、結果だけ見ればただのfor文と一緒だけど、要素の数だけ繰り返すため終了条件を気にしなくて良いのが素敵。
for...in文
for...of文の時と同じ配列に使ってみると・・・
function forIn() {
var array = [1, 2, 3, 4, 5];
for(var i in array){
Logger.log(i);
}
}
各要素のインデックスが・・・何か使い道があるんだろうか?良く分からん。
そうではなくて、連想配列に使ってこそのfor...in文!
function forIn() {
var obj = {first : 1,
second: 2,
third : 3,
forth : 4,
fifth : 5}
for(var key in obj){
Logger.log(key);
Logger.log(obj[key]);
}
for(var i in obj){
i = obj[i] * 5;
Logger.log(i)
}
}
なんと、連想配列の中身が得られる。
任意の変数に「キー名称」、配列名[変数]
で「値」が、それぞれ与えられる。
2つ目の繰り返しは、得られた値を5倍している。
つづく
「for文」いろいろ②forEach~3つの引数~ へ続く...