メモ欄からjsonデータの取得・表示について

ecf5DTTzl6h6lJj02
記事: 459
登録日時: 2018年12月23日(日) 13:55

Re: メモ欄からjsonデータの取得・表示について

投稿記事by ecf5DTTzl6h6lJj02 » 2023年10月23日(月) 13:43

こんにちは。
ぼぶのすけ さんが書きました:こんばんは。

ご返信ありがとうございます。

今回の返信でいただいた情報により、

・装備全体が保有する値の表示 [groupName[?]]に格納された値を0,0,3,0,0,0 のような形式で出力
・任意装備が保有する値の表示 [groupName[?]][!]において、スロット番号!が持つ?の値を 3 のような形で出力
・先頭にグループ名を表示 グループ名: ○○ 値: 0,0,3,0,0,0のような形で出力

上記三つを実装することができました。ありがとうございます。

現状複数のグループがgroupNameに格納されている場合、

コード: 全て選択

console.log("グループ名: " + groupName[0] + " " + "値: " + armorPoints[groupName[0]]);
console.log("グループ名: " + groupName[1] + " " + "値: " + armorPoints[groupName[1]]);
console.log("グループ名: " + groupName[2] + " " + "値: " + armorPoints[groupName[2]]);

のような形で出力しているのですが、この場合groupName[1]までしか値が入っていない場合、groupName[2]以降には undefined となり見栄え(?)が少し悪かったり、groupName[6]まで値が入っていた場合にその値が見えないということが起こってしまいます。

理想としては、groupNameにいくつまで値が入っているかを確認し、入っている値だけ自動で文字列を出力されるという処理を作りたいと思っています。

例として、groupName[3]まで値が入っているとしたら、自動で

グループ名: A 値: ○,○,○,○,○,○
グループ名: B 値: ○,○,○,○,○,○
グループ名: C 値: ○,○,○,○,○,○
グループ名: D 値: ○,○,○,○,○,○

のような形で出力されるイメージです。

実際にこのような事は可能なのでしょうか??
お教え頂ければ幸いです。

よろしくお願いいたします。

前回、一旦ここまでにします。といった理由がまさにこれです。
質問の 「入ってる値だけを自動的に出力する処理」まで説明すると、長くなりますし、
混乱しそうだなと思ったために、解説を区切らせてもらっていました。

配列には、forEach というメソッドが存在します。

コード: 全て選択

配列が入っている変数名.forEach(コールバック関数)

という書き方をして使用する関数で、
配列の要素を先頭から順繰りに取り出して、コールバック関数を実行するという内容です。
詳しくは、
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/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番目のように、値をバラバラにして描画するほうが、見た目の体裁を整えやすいかなと思います。
示したコードそのままでできるわけではないので、そこは、自身で工夫してコードを書く必要がありますが。

ぼぶのすけ
記事: 17
登録日時: 2023年9月23日(土) 16:40

Re: メモ欄からjsonデータの取得・表示について

投稿記事by ぼぶのすけ » 2023年10月23日(月) 23:05

こんばんは。

ご返信ありがとうございます。

教えていただいたforEachを使うことで理想の動作をさせることができました。
本当にありがとうございました。

あとは実際に選んだアクターのポイントを出力する処理を完成させるだけなので、いろいろ調べて作ってみようと思います。

お世話になりました。

“MV:質問” へ戻る