前回、一旦ここまでにします。といった理由がまさにこれです。ぼぶのすけ さんが書きました:こんばんは。
ご返信ありがとうございます。
今回の返信でいただいた情報により、
・装備全体が保有する値の表示 [groupName[?]]に格納された値を0,0,3,0,0,0 のような形式で出力
・任意装備が保有する値の表示 [groupName[?]][!]において、スロット番号!が持つ?の値を 3 のような形で出力
・先頭にグループ名を表示 グループ名: ○○ 値: 0,0,3,0,0,0のような形で出力
上記三つを実装することができました。ありがとうございます。
現状複数のグループがgroupNameに格納されている場合、のような形で出力しているのですが、この場合groupName[1]までしか値が入っていない場合、groupName[2]以降には undefined となり見栄え(?)が少し悪かったり、groupName[6]まで値が入っていた場合にその値が見えないということが起こってしまいます。コード: 全て選択
console.log("グループ名: " + groupName[0] + " " + "値: " + armorPoints[groupName[0]]); console.log("グループ名: " + groupName[1] + " " + "値: " + armorPoints[groupName[1]]); console.log("グループ名: " + groupName[2] + " " + "値: " + armorPoints[groupName[2]]);
理想としては、groupNameにいくつまで値が入っているかを確認し、入っている値だけ自動で文字列を出力されるという処理を作りたいと思っています。
例として、groupName[3]まで値が入っているとしたら、自動で
グループ名: A 値: ○,○,○,○,○,○
グループ名: B 値: ○,○,○,○,○,○
グループ名: C 値: ○,○,○,○,○,○
グループ名: D 値: ○,○,○,○,○,○
のような形で出力されるイメージです。
実際にこのような事は可能なのでしょうか??
お教え頂ければ幸いです。
よろしくお願いいたします。
質問の 「入ってる値だけを自動的に出力する処理」まで説明すると、長くなりますし、
混乱しそうだなと思ったために、解説を区切らせてもらっていました。
配列には、forEach というメソッドが存在します。
コード: 全て選択
配列が入っている変数名.forEach(コールバック関数)
配列の要素を先頭から順繰りに取り出して、コールバック関数を実行するという内容です。
詳しくは、
https://developer.mozilla.org/ja/docs/W ... ay/forEach
の解説をご覧ください。
これを、使えば、グループ名の配列に入っている分だけ、ポイントの値を(コンソール画面に)出力するという処理を、
書くことができます。
例えば、
armorPoints にポイントのデータ
groupName にグループ名の配列が入っている場合、
コード: 全て選択
groupName.forEach(name => {
console.log(name + ':', armorPopints[name]);
});
グループ名1: [値1, 値2, 値3, ... 値n]
グループ名2: [値1, 値2, 値3, ... 値n]
…
グループ名n: [値1, 値2, 値3, ... 値n]
というように、groupName の要素数だけ出力されます。
上記のコードの groupName[name] で取り出しているポイントの値も配列なので、同じことができます。
なので、例えば、上記のコードを
コード: 全て選択
groupName.forEach(name => {
console.log(name);
armorPoints[name].forEach(point => {
console.log(point);
});
});
グループ名1
値1
値2
…
値n
グループ名2
値1
値2
…
値n
…
グループ名n
値1
値2
…
値n
のように、ポイントをバラバラに出力することもできます。
実際にウィンドウ上に描画する際は、
描画位置、 幅、高さ を指定して、テキスト描画用の関数を実行することになりますので、
2番目のように、値をバラバラにして描画するほうが、見た目の体裁を整えやすいかなと思います。
示したコードそのままでできるわけではないので、そこは、自身で工夫してコードを書く必要がありますが。