質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.62%

JavaScriptについて

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 984

score 5

前提・実現したいこと

以下のコードについて教えて下さい
const characters = [
{name: "にんじゃわんこ", age: 14},
{name: "ひつじ仙人", age: 100},
{name: "ベイビーわんこ", age: 5},
];

// for文を完成させてください
for (let i=0;i<characters.length ;i++) {
console.log("--------------------");

// 定数characterを定義してください
const character=characters[i];

// 「名前は〇〇です」を出力してください
console.log(名前は${character.name}です);

// 「〇〇歳です」を出力してください
console.log(${character.age}歳です);

}

一度、  const character=characters[i];と定義する意味が
わかりません。
ド素人で申し訳ございませんがよろしくお願い致します。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

試したこと

補足情報(FW/ツールのバージョンなど)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/11/30 06:43 編集

    質問は編集できるので適宜ご対応ください。
    「質問への追記修正依頼」をスルーされると回答が得られにくくなる傾向が顕著にあります
    (必要なことを依頼しています。特にコードの見せ方は結構大事です)

    キャンセル

  • pop03

    2019/12/02 10:25

    すいません、以後気を付けます

    キャンセル

  • m.ts10806

    2019/12/02 10:58

    質問は編集できるので適宜ご対応ください。

    キャンセル

回答 4

checkベストアンサー

+1

微妙に表記がまちがっていますね

const characters = [
  {name: "にんじゃわんこ", age: 14},
  {name: "ひつじ仙人", age: 100},
  {name: "ベイビーわんこ", age: 5},
  ];

for (let i=0;i<characters.length ;i++) {
  console.log("--------------------");
  const character=characters[i];
  console.log(`名前は${character.name}です`);
  console.log(`${character.age}歳です`);
}

const character=characters[i];と定義する意味が
わかりません。

変数を使うのは再利用するためです。
名前と年齢で同じ変数を参照していますね
もちろん変数を使わなくても結構ですが、ちょっと冗長になります

for (let i=0;i<characters.length ;i++) {
  console.log("--------------------");
  console.log(`名前は${characters[i].name}です`);
  console.log(`${characters[i].age}歳です`);
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/29 17:28

    ありがとうございます。直接characters[i].nameやcharacters[i].ageと書いても大丈夫でした。
    これをcharacters.nameやcharacters.ageと[i]を抜いたらいけないのは、なぜでしょうか?

    キャンセル

  • 2019/11/29 17:29

    charactersは配列ですからnameやageというプロパティをもっていないからです

    キャンセル

  • 2019/11/29 17:35 編集

    characters は配列で、何番目の要素のnameかを指定する必要があります。
    for文でインデックス番号ではなく要素を取り出すループにする手もあります。
    コメントの方にソースを追加しておきます。
    (違うところにコメントしてしまいました。すみません。)

    キャンセル

  • 2019/11/29 17:41

    ありがとうございます。ようやく何となく理解できました。

    キャンセル

+1

一度、  const character=characters[i];と定義する意味が
わかりません。

console.log() がシンプルになる方法を示したいのでしょう。


最新の JavaScript 実行環境だと「分割代入」でもう少しシンプルになります。

for (let i=0;i<characters.length ;i++) {
  const { name, age } = characters[i]; // 分割代入
  console.log("--------------------");
  console.log(`名前は${name}です`);
  console.log(`${age}歳です`);
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

一度、  const character=characters[i];と定義する意味が
わかりません。

特に意味はありません。下の方で、直接characters[i].namecharacters[i].ageと参照する形で書いても、問題なく動作します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/29 17:27

    ありがとうございます。直接characters[i].nameやcharacters[i].ageと書いても大丈夫でした。
    これをcharacters.nameやcharacters.ageと[i]を抜いたらいけないのは、なぜでしょうか?

    キャンセル

  • 2019/11/29 17:30

    characters自体は配列ですので、nameやageは定義されていません。

    キャンセル

  • 2019/11/29 17:41

    ありがとうございます。ようやく何となく理解できました。

    キャンセル

0

代入しなくてもできますよ。
characters[i] が 2回登場するので、1回にまとめるために変数に代入しているだけの話。

const characters = [
  {name: "にんじゃわんこ", age: 14},
  {name: "ひつじ仙人", age: 100},
  {name: "ベイビーわんこ", age: 5},
];

// for文を完成させてください
for (let i = 0; i < characters.length; i++) {
  console.log("--------------------");

  // 「名前は〇〇です」を出力してください
  console.log(`名前は${characters[i].name}です`);

  // 「〇〇歳です」を出力してください
  console.log(`${characters[i].age}歳です`);
}

for文で要素を変数に代入しながらループする方法もあります。

const characters = [
  {name: "にんじゃわんこ", age: 14},
  {name: "ひつじ仙人", age: 100},
  {name: "ベイビーわんこ", age: 5},
];

// for文を完成させてください
for (let character of characters) {
  console.log("--------------------");

  // 「名前は〇〇です」を出力してください
  console.log(`名前は${character.name}です`);

  // 「〇〇歳です」を出力してください
  console.log(`${character.age}歳です`);
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/29 17:28

    ありがとうございました。

    キャンセル

  • 2019/11/29 17:44

    for文でインデックス番号ではなく要素を取り出すループにするにはどのようにすればよろしいですか?

    キャンセル

  • 2019/11/29 17:45

    上の回答部分にコードを追記しておきました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る