質問: 'number') { //配列のプロパティのデータ型が数値の場合 console.log(data[num]); //1, 4, 5, 8と出力されることを確認 sum += data[num]; //変数sum(0)にプロパティを順に足していく } } alert(sum); //18 ``` 配列はconsoleで結果を確認するために私が適当に決めました。 答えについては上記のように理解は出来たのですが、 console.log(data[num]); を間違えて console.log(num); と入力した際に、consoleには0, 1, 2, 4と表示されました。 index番号を取得してきているようです。 index番号を取得する場合はconsole.log(num.index);ではないのかなと思ったのですが、 逆に全てundefinedと返ってきてしまいました、、、 for/in文の中で配列のindex番号を全てconsoleに表示する場合は for (変数名 in オブシェクト名) 文 において console(変数名); ということなのでしょうか、、? かなり初歩的な質問で申し訳ないのですが、混乱してきてしまったのでどなたかご回答お願いいたしますm(_ _)m
回答: JavaScriptのfor/in文は、オブジェクトの**プロパティ**に対して反復処理をするという仕様です。 配列におけるプロパティはもちろんインデックス番号です。 そのため、`num`にはインデックス番号が入ります。 どうしても値からインデックス番号を取得して表示させたい!という場合は、回りくどいですがこんな感じになります。 また、インデックス番号を取得するメソッドとしては`indexOf`がありますが、これは「配列にある値のうち、該当する最初のもののインデックス番号を取得する」メソッドです。 これを強引に使うなら、回りくどいですがこんな感じになります。 ``` for (let i in data) { console.log(data.indexOf(data[i])); } ``` ただし、配列の中に同じ値があると正しい結果が返ってきません。