Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
@Hoshi10Lighthouse
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A

sum +=1 なぜ足すの? Javascript

解決したいこと

ここに解決したい内容を記載してください。
複数の数値が定義されている配列dataから、「各数値」と「40未満の数値がいくつあるか」を表示するプログラムを作成という問題です。

sum +=1 なぜ 合計という意味のsumに1を足すのでしょうか?

どなたか、優しい方わかりやすく教えてくださると助かります:relaxed:


var data = [59,39, 100, 2, 15, 40, 84, 97];
        var sum =0;
        for(var i =0; i<data.length; i++){
            document.write('<p>'+ data[i] + '</p>');
            if(data[i] < 40){
                sum +=1
            }
        }
        document.write('<p>40点未満の人は' + sum + '人です</p>');
0
5
Answer

以下のように1行1行コメントを入れていく。
その時にsum変数が何のための変数なのかを明確にすることで、
なぜsum変数に1を足しているかが分かるかと思います。

// data変数を定義する。
var data = [59,39, 100, 2, 15, 40, 84, 97];

// sumに0を入れる。sumは40点未満の人の合計人数を意味する変数とする。
var sum =0;

// i変数に0を入れ、一連の処理が終わるごとにiに1ずつ加算していく。
// iがdata変数の要素すうまで達したら繰り返し処理を終了する。
for(var i =0; i<data.length; i++){

    // pタグでdata変数のi番目の要素をHTML要素として書き出す
    document.write('<p>'+ data[i] + '</p>');

    // data変数のi番目の要素が40未満の場合
    if(data[i] < 40){

        // 40点未満の合計人数に1を加算する
        sum +=1
    }
}

// 最後に、40点未満の人は (data変数の中で40点未満だった人の合計人数) 人です とHTML要素として書き出す。
document.write('<p>40点未満の人は' + sum + '人です</p>');
1
ありがとうございます!こんなに丁寧に教えていただき感謝しております!また機会がありましたらよろしくお願いいたします。

名前(変数名)が良くないですね。
count とかにすればいいのに。

var data = [59, 39, 100, 2, 15, 40, 84, 97];
var count_lower_40 = 0;
for(var i =0; i<data.length; i++){
    document.write('<p>'+ data[i] + '</p>');
    if(data[i] < 40){
        count_lower_40 += 1
    }
}
document.write('<p>40点未満の人は' + count_lower_40 + '人です</p>');
1
回答ありがとうございます!count_lower まだ習っていなくてわかりませんでした。情報ありがたく勉強させていただくいい機会になり、心から感謝しております!

ちょっと横やりになりますが、
「count_lower」は変数名ですよ。
自分や周りの人が分かるように名前を付けます。

プログラムに数を数えさせるときには、
「今いくつまで数えたか」という箱が必要になるんです。
sumはMicrosoftのExcelでも見ますね。

var sum =0;←この行では「箱の名前は『sum』、箱の中身は『0』」と決めています。
「40未満の数値がいくつあるか」ということなので数える必要がありますね?
だから条件を満たしたときに「sum +=1」として箱の中身に『1』を足すんです。

※別の書き方も出来ます。が、慣れるまではこのような理解でよいかと思います。

1
ありがとうございます!

多分forループを使うから、堅苦しく見えるんだと思う。

[59, 39, 100, 2, 15, 40, 84, 97].filter((point) => (point < 40)).length;

Arrayクラスのメソッドを使うほうが良いような。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array

const sum = [59, 39, 100, 2, 15, 40, 84, 97].filter((point) => {
  document.write(`<p>${point}</p>`);

  return point < 40
}).length;

document.write(`<p>40点未満の人は${sum}人です</p>`);
1
ありがとうございます!勉強になります!
sum +=1

sum = sum + 1

を省略した形で sum の値を1増やします

sum = sum + 1

のような書き方は良く使うので省略形が生まれました

1
丁寧に教えていただきありがとうございます!
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login