###前提・実現したいこと
tableがクリックされた時にその行に設定されている日付のSQLに記録されているダメージログを取得し、ネーム別に合計値を算出しようとしましたが連装配列combatantにデータが登録されず
申し訳ありませんforeachループ中にはcombatantに値は正常に記録されているようでした。ですがforeachを抜けると変数combatantの値が消えているようです。なぜ中身が消えるのか教えていただきたいです。
###該当のソースコードJavaScript
var combatant_o = {}; var pie_data = []; $("#logtable tbody td").bind("click", function () { var datetime = $(this).closest('tr').children('td:eq(0)').text().replace(/\r?\n/g, "").trim(); //console.log("||" + datetime + "||"); $.getJSON('db.php', { "datetime": datetime }, function (j_data) { var combatant = {}; //console.table(j_data); //console.table(j_data[0]); $.each(j_data, function (i, item) { $.each(j_data[i], function (j, iteml) { var player_data = j_data[i][j]; //console.table(player_data); //console.log(j_data[i][key]["char_name"]+":"+j_data[i][key]["atk_dmg"]); //console.table(j_data[key]); if (combatant[player_data["char_name"]]) { combatant[player_data["char_name"]] = (combatant[player_data["char_name"]] + player_data["atk_dmg"]); //console.log(player_data["char_name"] += ":" + player_data["atk_dmg"]); } else { // console.table(player_data); //console.log(player_data["char_name"] + ":" + player_data["atk_dmg"]); combatant[player_data["char_name"]] = player_data["atk_dmg"]; } console.table(combatant); combatant_o = combatant; }) } ) } ) console.table(combatant_o); Object.keys(combatant_o).forEach(function (key) { console.log(key + ":" + combatant_o[key]); pie_data.push([key, combatant_o[key]]); }) drawChart(); });
###試したこと
・変数のスコープの問題かと思い一番外側にcombatant_oを用意し、foreach中にcombatantから値渡しをしたがループが終わるとcombatant_oにも値が記録されなかった
回答2件
あなたの回答
tips
プレビュー