前提・実現したいこと
for文の変数iを元に
空の連想配列に値を代入、値を読み込み
発生している問題・エラーメッセージ
連想配列名{
大キー0:{
小キー0:[値],
の様な連想配列を作りたいのですが、中身をログ表示しようとすると、以下のエラーメッセージが出て処理が止まります。
TypeError: Cannot read property 'B0' of undefined
エラーメッセージの「'B0'」は小キー0に該当する部分なので、大キー0は作成&表示されるのですが…
該当のソースコード
1function rensoArrayLesson(){ 2 var noSelect = "成否が選択されていません"; 3 var low = 4; //横の行(数字) 4 var col = 2; //縦の列(アルファベット) 5 var score; 6 var alphabet = ["A","B"]; 7 var alphakosuu = alphabet.filter(String).length; 8 var gss = Gss(); // 現在開いているシートを取得 [ss,nowsheet] 9 var ss = gss[0]; 10 var nowsheet = gss[1]; 11 //getRange(指定する範囲の行番号,指定する範囲の列番号,範囲の行数,範囲の列数) 12 var result = nowsheet.getRange(low,col,10,12).getValues(); //現在開いているシートの出題されたその全て配列に格納 13 var questionN = nowsheet.getRange(low,col,10,1).getValues(); 14 questionN = questionN.filter(String).length; 15 Logger.log("result="+ result); 16 Logger.log("questionN="+ questionN); 17 var mondai = []; 18 var seihi = []; 19 var rensoArray = {}; 20 var alphaPassed = {}; //どの頭文字を何回処理したかを格納 21 22 23/* こんな配列を作るよ 24 var rensoArray = { 25 initialA:{ 26 A0:["aniki","兄貴","aniki proshoot is dead",0,0], 27 A1:["arashi","嵐","arashi the gamecenter",2,2], 28 }, 29 initialB:{ 30 B0:["baka","馬鹿","you are very baka",1,2], 31 B1:["bonkura","ボンクラ","who the fuck said bonkura?",0,0], 32 }, 33 } 34 Logger.log("rensoArray[initialB][B0][1]="+ rensoArray["initialB"]["B0"][1]); 35*/ 36 37 for(var i=0; i<=questionN-1; i++){ //空のseihiが無いか調べる 38 seihi = result[i][1]; 39 switch(seihi){ 40 case "◯": 41 break; 42 case "×": 43 break; 44 case "△": 45 break; 46 case "": 47 Logger.log("空っぽなんだぜー"); 48 break; 49 default: 50 Logger.log("デフォルトだー"); 51 break; //returnに変えたらどうなる? 52 } 53 } 54 55 for(var i=0; i<=questionN-1; i++){ //空の成否が無い事を確認済みだから処理を進めるね 56 seihi = result[i][1]; 57 switch(seihi){ 58 case "◯": 59 score = -1; 60 break; 61 case "×": 62 score = 1; 63 break; 64 case "△": 65 score = 0; 66 break; 67 } 68 mondai = String(result[i][0]); 69 70 var initial = mondai.slice(0,1); //最初の一文字を抜き出す 71 var oldscore = parseInt(result[i][11]); 72 73 for(var j=0; j<alphakosuu; j++){ 74 Logger.log("alphakosuu="+ alphakosuu); 75 Logger.log("i="+ i); 76 Logger.log("j="+ j); 77 if(initial.toLowerCase() === alphabet[j].toLowerCase()){ //変数の内容を全て小文字にして比較 78 Logger.log(initial +"は"+ alphabet[j] +"だ"); 79 Logger.log("ifのi="+ i); 80 Logger.log("ifのj="+ j); 81 82 83 if(alphaPassed[alphabet[j]] == undefined){ //これでいいのか要確認 tryとか使ってみる? 84 alphaPassed[alphabet[j]] = 0; 85 Logger.log("初めて配列作れたかな?="+ alphaPassed[alphabet[j]]); 86 var passed = alphaPassed[alphabet[j]]; 87 Logger.log("初めてさ"); 88 Logger.log("passed="+ passed); 89 }else{ 90 Logger.log("alphaPassed="+ alphaPassed); 91 var passed = alphaPassed[alphabet[j]]; 92 alphaPassed[alphabet[j]] = passed+1; 93 Logger.log(passed +"度目さ"); 94 Logger.log("passed="+ passed); 95 } 96 97 98 var arr = []; 99 arr.push([mondai,score,oldscore]); 100 101 var key2 = alphabet[j]+passed; 102 Logger.log("key2="+ key2); 103/* 104 if(rensoArray["initial"+alphabet[j]][alphabet[j]+passed] === undefined){ 105 rensoArray["initial"+alphabet[j]][alphabet[j]+passed] = 0; 106 } 107*/ 108 Logger.log("initial"+ alphabet[j] +"=initial"+alphabet[j]); 109 Logger.log("alphabet[j]+passed="+ alphabet[j]+passed); 110 111 rensoArray = "initial"+alphabet[j]; 112 rensoArray["initial"+alphabet[j]] = alphabet[j]+passed; 113 114 Logger.log("rensoArray="+ rensoArray); 115 Logger.log("rensoArray[initial+alphabet[j]]="+ rensoArray["initial"+alphabet[j]]); 116 Logger.log("rensoArray[initial+alphabet[j]][alphabet[j]+passed]="+ rensoArray[ +"initial"+ alphabet[j]][alphabet[j]+passed]); 117 118 rensoArray["initial"+alphabet[j]][alphabet[j]+passed] = arr; 119 //rensoArray["initial"+alphabet[j]] = [alphabet[j]+i]; 120 //rensoArray["initial"+alphabet[j]][alphabet[j]+i][i] = arr; 121 //rensoArray{["initial"+alphabet[j]]{[alphabet[j]+j]}} = mondai; 122 //rensoArray["initial"+alphabet[j]][alphabet[j]+j] = mondai +","+ score +","+ oldscore; 123 124 break; 125 } 126 } 127 } 128 Logger.log("rensoArray="+ rensoArray); 129 Logger.log("rensoArray="+ rensoArray["initialA"]); 130 Logger.log("rensoArray="+ rensoArray["initialA"]["A0"]); 131 Logger.log("rensoArray="+ rensoArray["initialA"]["A0"][0]); 132 133} 134
回答2件
あなたの回答
tips
プレビュー