重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

多次元配列で入れ子になっている変数の参照方法を教えてください。
以下のようなオブジェクトで例えば、各idのJapaneseの値を
for-in文で参照する場合の書き方を教えてください。
for( var item in data.ten) だとtenのすべてが取得されてしまいます。
Japaneseのtenの値を取得したいです。
わからず苦戦しております、どうぞよろしくお願いたします。

var data = [
{
id: "101",
ten: [{"Japanese":"100", "Math":"95", "English":"88"}]
}
{
id: "102",
ten: [{"Japanese":"45", "Math":"100", "English":"76"}]
}
{
id: "103",
ten: [{"Japanese":"99", "Math":"95", "English":"65"}]
}
]

質問者からの補足コメント

  • tenのすべてのキーの値を取得したいのですが
    XXXXXは何を入れればよいのでしょうか?
    Object.key(item2)としてみたのですが、うまく取れなかったです。。。

    for(const item in data){
    for( item2 in item.ten){
    console.log(item2[0].XXXXXXX)
    }
    }

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/02/24 18:51

A 回答 (3件)

No1です



>例えば、各idのJapaneseの値をfor-in文で参照する
>tenのすべてのキーの値を取得したいのですが
内容が変わってしまっているので、何をなさりたいのかわかりません。

後者なら、
Object.keys(data[0].ten[0]).forEach( k=> {console.log(k)});
とか?
※ 各オブジェクトが同じ構造と考えても良いという条件付きですが。
    • good
    • 0
この回答へのお礼

お礼がおそくなってしまいましたが、回答ありがとうございます!!
補足の書き方が下手で混乱させてしまいましたが、
tenのキーに対応する値(value)を取得しようとしていました。
回答いただいた内容を参考に、何とか解決できました。
ありがとうございます。

お礼日時:2021/02/26 08:23

配列の要素を全て処理


→ for (var i=0; i<arr.length; i++) { console.log(arr[i]) }
→ for (var v of arr) { console.log(v) }

配列の特定要素を処理
→ console.log(arr[0]);

オブジェクトの項目を全て処理
→ for (var i in obj) { console.log(obj[i]) }

オブジェクトの特定項目を処理
→ for (var i in obj) { if(i == "Japanese") console.log(obj[i]) }
→ console.log(obj["Japanese"]);
→ console.log(obj.Japanese);
    • good
    • 0
この回答へのお礼

詳しく、わかりやすく回答いただきありがとうございます。
Japanese以外も取得したいので
Japanese以外を可変にしたら、回答いただいた内容で対応できそうです。
ありがとうございます。

お礼日時:2021/02/26 08:24

こんにちは



>for-in文で参照する場合の書き方
for-inにする理由がわかりませんが、無理にやるなら
for(const item in data) console.log( data[item].ten[0].Japanese);

普通にやるなら
data.forEach(d => console.log(d.ten[0].Japanese));
とかでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!