つづき
「for文」いろいろ①for, for...of, for...in の続き
概要
forEach文ってのもあって、for...of的な使い方や、for...in的な使い方もできちゃう。もちろんforEach的な使い方もある。
まずは基本
配列.forEach( function(e) { 何かしらスクリプト } );
配列の要素を引数に関数が書けちゃう!何だか便利そう?
for...of的な使い方
function MarudeForOf() {
var array = [1, 2, 3, 4, 5];
array.forEach( function(i) {
Logger.log(i);
});
array.forEach( function(i) {
i = i * 5;
Logger.log(i);
});
}
配列の要素が順番にfunction(i)
の引数に。
①のfor_ofと全く同じ結果。forEachである意味?
for...in的な使い方
function MarudeForIn() {
var obj = [{name:'first', num:1},
{name:'second', num:2},
{name:'third', num:3},
{name:'forth', num:4},
{name:'fifth', num:5}]
obj.forEach( function(i) {
Logger.log(i.name, 'は', i.num, 'です');
});
obj.forEach( function(i) {
i = i.num * 5;
Logger.log(i);
});
}
引数.キー名称
で値が得られる。
2つ目の繰り返しでは、numの値に5倍している。
forEach的な使い方
なにやらforEachには引数が3つあるらしいので、確かめてみた。
function TestForEach() {
var array = [1, 2, 3, 4, 5];
array.forEach( function(i, j, k) {
Logger.log("配列", k, "の", j, "番目の要素は", i);
});
}
配列「引数3」の「引数2」番目の要素は「引数1」
としてログを出したところ。
1つ目の引数は配列の要素、2つ目はインデックス、3つ目は配列そのものとなっている。
この仕組みを使って、なんとかforEach的なんじゃないかなって使い方を試したのがコチラ。
function KorezoForEach() {
var obj = ['家康','秀忠','家光','家綱','綱吉']
obj.forEach( function(name,generation,family) {
family[generation] = generation + 1 + '代目 徳川' + name;
});
Logger.log(obj);
}
徳川ファミリーの名前が入った配列の、全ての要素に「〇代目 徳川」を追加することができた。
今はこんなだけど、覚えておけばいつか使うこともあるのかな(笑)