teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

試したことについて追記

2018/01/11 15:18

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -47,6 +47,8 @@
47
47
  });
48
48
  ```
49
49
  ###試したこと
50
+ ・変数のスコープの問題かと思い一番外側にcombatant_oを用意し、foreach中にcombatantから値渡しをしたがループが終わるとcombatant_oにも値が記録されなかった
51
+
50
52
  配列の構造について
51
53
  ![イメージ説明](0f5bdb099bbce0183c661f4cf9fbc660.jpeg)
52
54
  j_data

4

わかったことについて追記

2018/01/11 15:18

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,40 +1,47 @@
1
1
  ###前提・実現したいこと
2
- SQLに記録されているダメージログを取得し、ネーム別に合計値を算出しようとしましたが連装配列combatantにデータが登録されず困っています。コンソールの出力にはSQLからの取得は成功してダメージ一覧が取れているようですか原因がわかりません。
2
+ tableがクリックされた時にその行に設定されている日付のSQLに記録されているダメージログを取得し、ネーム別に合計値を算出しようとしましたが~~連装配列combatantにデータが登録されず~~
3
-
3
+ 申し訳ありませんforeachループ中にはcombatantに値は正常に記録されているようでした。ですがforeachを抜けると変数combatantの値が消えているようです。なぜ中身が消えるのか教えていただきたいです。
4
4
  ###該当のソースコード```JavaScript```
5
5
  ```
6
- var combatant = {};
6
+ var combatant_o = {};
7
7
  var pie_data = [];
8
8
  $("#logtable tbody td").bind("click", function () {
9
9
  var datetime = $(this).closest('tr').children('td:eq(0)').text().replace(/\r?\n/g, "").trim();
10
- combatant = {};
11
- pie_data = [];
12
- console.log("||" + datetime + "||");
10
+ //console.log("||" + datetime + "||");
13
11
  $.getJSON('db.php', { "datetime": datetime },
14
12
  function (j_data) {
13
+ var combatant = {};
14
+ //console.table(j_data);
15
15
  //console.table(j_data[0]);
16
16
 
17
17
  $.each(j_data, function (i, item) {
18
+ $.each(j_data[i], function (j, iteml) {
18
- for (key in j_data[i]) {
19
+ var player_data = j_data[i][j];
20
+ //console.table(player_data);
19
21
  //console.log(j_data[i][key]["char_name"]+":"+j_data[i][key]["atk_dmg"]);
20
22
  //console.table(j_data[key]);
21
- if (j_data[i][key]["char_name"] in combatant) {
23
+ if (combatant[player_data["char_name"]]) {
24
+ combatant[player_data["char_name"]] = (combatant[player_data["char_name"]] + player_data["atk_dmg"]);
22
- //console.log(j_data[i][key]["char_name"] + ":" + j_data[i][key]["atk_dmg"]);
25
+ //console.log(player_data["char_name"] += ":" + player_data["atk_dmg"]);
23
- combatant[j_data[i][key]["char_name"]] += j_data[i][key]["atk_dmg"];
24
26
  } else {
27
+ // console.table(player_data);
28
+ //console.log(player_data["char_name"] + ":" + player_data["atk_dmg"]);
25
- combatant[j_data[i][key]["char_name"]] = j_data[i][key]["atk_dmg"];
29
+ combatant[player_data["char_name"]] = player_data["atk_dmg"];
26
30
 
27
31
  }
32
+ console.table(combatant);
33
+ combatant_o = combatant;
34
+
28
- }
35
+ })
29
36
  }
30
37
  )
31
38
  }
32
- );
39
+ )
33
- console.table(combatant);
40
+ console.table(combatant_o);
34
- Object.keys(combatant).forEach(function (key) {
41
+ Object.keys(combatant_o).forEach(function (key) {
35
- console.log(key + ":" + combatant[key]);
42
+ console.log(key + ":" + combatant_o[key]);
36
- pie_data.push([key, combatant[key]]);
43
+ pie_data.push([key, combatant_o[key]]);
37
- });
44
+ })
38
45
 
39
46
  drawChart();
40
47
  });

3

jdataの中身について追記

2018/01/11 15:14

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -40,6 +40,7 @@
40
40
  });
41
41
  ```
42
42
  ###試したこと
43
+ 配列の構造について
43
44
  ![イメージ説明](0f5bdb099bbce0183c661f4cf9fbc660.jpeg)
44
45
  j_data
45
46
  ![イメージ説明](9d90863994b03061dffe07670949b24b.jpeg)

2

jdataの中身について追記

2018/01/11 14:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,9 @@
40
40
  });
41
41
  ```
42
42
  ###試したこと
43
- 課題に対してアプロチしたことを記載してください
43
+ ![イメジ説明](0f5bdb099bbce0183c661f4cf9fbc660.jpeg)
44
+ j_data
45
+ ![イメージ説明](9d90863994b03061dffe07670949b24b.jpeg)
46
+ jdata[0]
47
+ ![イメージ説明](68313b031e61507a0e4a62da842eff6d.jpeg)
48
+ jdata[0][0]

1

コードのレイアウト変更

2018/01/11 14:14

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,8 @@
1
1
  ###前提・実現したいこと
2
2
  SQLに記録されているダメージログを取得し、ネーム別に合計値を算出しようとしましたが連装配列combatantにデータが登録されず困っています。コンソールの出力にはSQLからの取得は成功してダメージ一覧が取れているようですか原因がわかりません。
3
3
 
4
- ###該当のソースコード
4
+ ###該当のソースコード```JavaScript```
5
+ ```
5
6
  var combatant = {};
6
7
  var pie_data = [];
7
8
  $("#logtable tbody td").bind("click", function () {
@@ -37,5 +38,6 @@
37
38
 
38
39
  drawChart();
39
40
  });
41
+ ```
40
42
  ###試したこと
41
43
  課題に対してアプローチしたことを記載してください