問題文
配列 numbers を作成し、その要素を 1, 2, 3, 4, 5 とします。この配列の要素をすべて2倍にして、新しい配列 doubledNumbers に格納してください。
考える順番
・配列numbersを作成
・numbersの要素に×2
・空の配列doubledNumbersにnumbers×2を格納
誤)考えたコード
function myFunction() {
let doubledNumbers = [];
let numbers = [1,2,3,4,5];
doubledNumbers.push([numbers]*2)
console.log(numbers)
}
間違い
doubledNumbers.push([numbers]*2)
→配列[numbers]に対して×2
→[numbers]が2つ作られる(出力ログ[1,2,3,4,5],[1,2,3,4,5])
■解決策
配列[numbers]から要素を取り出して2倍する必要がある
正)
function myFunction() {
let doubledNumbers=[];
const numbers = [1,2,3,4,5]
for(let i=0; i<numbers.length; i++){
doubledNumbers.push(numbers[i]*2)
}
console.log(doubledNumbers);
}
【まず i とは】
インデックスの略
配列内の要素を取得する
for文 読み方
どこまで繰り返すか:
[i]~numbers.length(0番目の要素から配列numbersに入っている要素の長さまで
増減は:
i++(i=i+i)でiを1づつ増やす
{処理}
繰り返し対象の処理
1回目
numbers[i](0番目の配列なので、ここでは要素[1])
→配列numberの箱に入っている[i]に×2
→配列doubledNumbersに結果を格納
for文により2回目以降は要素iに1づつ足される
i++([i]は0+1=1)となり、[i]=1
doubledNumbers.push(numbers[i]*2)
配列numbersの要素1番目(ここでは要素[2])に×2がされる
→結果が配列doubledNumbers[]に格納
上記の計算をnumbers.lengthまで繰り返され
numbersの要素ごとに×2した結果が
配列doubledNumbers[]に格納
出力ログは[ 2, 4, 6, 8, 10 ]