TypeError: undefinedのエラーの原因と解決方法

このQ&Aのポイント
  • javascriptの学習中に発生するTypeError: undefined のエラーの原因と解決方法を説明します。
  • Google Script Editorで配列に文字列がセットできないエラーメッセージが出る場合の対処法について説明します。
  • bentoという2次元配列に日付とメニューをセットする際に発生するエラーの原因と修正方法を紹介します。
回答を見る
  • ベストアンサー

TypeError: undefinedのエラー

javascriptの学習中ですが google script Editorにて実行時に以下のエラーが表示されて配列に文字列がセットできません。 「TypeError: undefined のプロパティ「0.0」を「2017年02月23日(木)」に設定できません。(行 8、ファイル「test」)」 //bentoという2次元配列に日付とメニューをセットしたい function myFunction() { var textDate = ["2017年02月23日(木)","2017年02月24日(金)","2017年02月25日(土)"]; var textMenu = ["チキンカツ","カレー","からあげ"]; var bento = new Array(); var j = 0; for(var i = 0; i < textDate.length; i++){ Logger.log(bento); bento[i][j] = textDate[i]; for(j = 0; j < textMenu.length; j++){ bento[i][j + 1] = textMenu[j]; } j = 0; } } //Logger.logで出力されたログ //[17-02-23 07:18:14:605 JST] []

noname#244681
noname#244681

質問者が選んだベストアンサー

  • ベストアンサー
  • kawais070
  • ベストアンサー率52% (2242/4282)
回答No.1

下記のようにすればいいんじゃないかな?試してないけど。 function myFunction() { var textDate = ["2017年02月23日(木)","2017年02月24日(金)","2017年02月25日(土)"]; var textMenu = ["チキンカツ","カレー","からあげ"]; var bento = new Array(); var j = 0; for(var i = 0; i < textDate.length; i++){ Logger.log(bento); bento[i] = new Array(); bento[i][j] = textDate[i]; for(j = 0; j < textMenu.length; j++){ bento[i][j + 1] = textMenu[j]; } j = 0; } }

noname#244681
質問者

お礼

ありがとうございます!3日くらい悩み続けてなかなかたどり着けませんでしたが、ご指摘の通りで解決いたしましたm(__)m

関連するQ&A

  • なぜundefinedになってしまうのでしょうか?

    乱数を配列にして、それを基準にしてランダムに処理を実行させたいのですが、 なぜかarrayRandomNum[0]がundefinedになります。 配列の始めのインデックスに当たる数値を取得できると考えていたのですがなぜundefinedになってしまうのでしょうか? let arrayRandomNum = [randomNumFunk(2)]; console.log(arrayRandomNum[0]); function randomNumFunk(count) { var generatedArray = []; var generatedCount = generatedArray.length; for(var i = 0 ; i < count; i++){ var candidate = Math.floor(Math.random() * count); for(var j = 0; j < generatedCount; j++) { if(candidate == generatedArray[j]){ candidate = Math.floor(Math.random() * count); j= -1; } } generatedArray[i] = candidate; generatedCount++; } return generatedArray; };

  • Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。

    Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。 var data = [ [1,2,3], [4,5,6], [7,8,9] ]; for (var i = 0; i < data.length; i++){ for (var j = 0; j < data[i].length; j++){ <--- ここで lengthのオブジェクトがNullというエラーになります。 alert(data[i][j]); } } よろしくお願いいたします。

  • 多次元配列とfor文について

    javascriptの配列について質問です。 例えば: var arrXXX = new Array(); function samplefunc{ //3次元配列の種類の作成 for (m = 0; m < aaa.length ; m++) { //連想配列作成 arrXXX .push(aaa[m]); } for (j = 0; j < bbb.length; j++) { for (i = 0; i < ccc.length; i++) { arrXXX[aaa[j]] = new Array(ccc.length); arrXXX[aaa[j]][i] = new Array(ccc.length); for (k = 0; k < ddd.length; k++) { arrXXX[aaa[j]][i][k] = eee;     ここでは配列を適切に使える・・・ } } } ここでarrXXXを使いたいが、3次元配列でなくなっている?!  arrXXX[~][0][0]はnullまたはオブジェクトではありません・・・がでます。 } 結局、for文を完全にでてしまうと、せっかくつくった配列がダメになってしまいます。どうすればfor文外で配列を使用できるのか教えてください!

  • 代入ができない。(undefined)

    環境:XP SP2, IE6/php, html, javascript submitした際にjavascriptの関数(getNo())が呼ばれ、その関数内で代入ができず参っています。 .php ----- <? $setNo = [111,222,333,444,555]; for($i=0;$i<5;$i++) {?> <input type="text" name="no[<?=$i;?>]" value="<?=$setNo[i];?>" id="no"> <?}?> (submit省略) .js ----- function getNo(obj) { var orgNo = document.all("no"); var bufNo = ""; //初期化空 //var bufNo ; //初期化しないと※1 //var bufNo = "huga";//初期化"huga"※2 for(var k=0; k<orgNo.length; k++) {  alert(orgNo[k].value);//k=0なら111と表示される bufNo = orgNo[k].value;//代入してるのに alert(bufNo='+bufNo); //空のまま →代入されてない なぜ?? //alert(bufNo='+bufNo);//※1undefined→代入されてない //alert(bufNo='+bufNo);//※2huga→代入されてない alert(orgNo='+orgNo[k].value);//k=0のときなら111と表示される } .jsには他にもsubmitから呼ばれている関数があり それらは正常に動作しますが、この関数だけおかしいので 書き直してみたりしましたが改善されません。 また、関数内で配列も宣言してますが、 配列要素にfor文のiなどを[i]のようにいれても、配列の値がうまく変数に代入できません。 ただし、[0]や[2]と指定すると正しい値が表示され、代入もできます。 undefinedになることが問題なのではなく 代入されない理由がわかりません。 どういうことになっているのか教えてください。

  • javespriptについて2

    <javascript type="text/javascript"> var nameArray=new Array(30); nameArray[0]="足立"; nameArray[1]="安藤"; nameArray[2]="内木"; : (1)for(var i=0;i<=nameArray.length;i ++){ (2)for(var j=0;j<=100.length;i ++){ (3)document.write(nameArray[i]+""); } 配列のところをやっていますが (1)うまく画面に出ませんでした (2)(1)の部分なんですが真ん中は条件を通常は入れるところですが この条件である”nameArray.length”はどういう事なんでしょうか? (3)(2)の部分はjより100小さい数が条件で (3)が適用されるというループですが ”nameArray[i]+""”は[j]でないのは何故なんでしょうか?

  • こちらのソースですが、なぜundefinedがでるのでしょうか?

    こちらのソースですが、なぜundefinedがでるのでしょうか? また、undefinedを消す方法はありますか? よろしくお願いいたします。 <script> window.onload = function(){ var hairetu = Array(1,2,3,4,5,6,7,8,9,10); for(var i=0; i<hairetu.length; i++){ var hoge; if(hairetu[i] % 2 == 0 && hairetu[i] % 3 == 0){ hoge += hairetu[i] + '\n'; }else if(hairetu[i] % 2 == 0){ hoge += hairetu[i] + '\n'; }else if(hairetu[i] % 3 == 0){ hoge += hairetu[i] + '\n'; }else { hoge += hairetu[i] + '\n'; } } alert(hoge); } </script>

  • javascriptの2次元配列をソートの仕方

    function word_grouping(data) { var code = data; //先頭についている”code="を除去 code = code.replace("code=",""); var = code.split(","); var alpha =new Array(); alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M']; //2次元配列作成 var array = new Array(); for (i =0; i < alpha.length; i++) { array[i] = [' ','0']: } //グループ名を格納 for( i = 0; i <alpha.length; i++){ array[i][0] = alpha[i] //0番目の項目から順番にグループごとに分ける for( i = 0; i < sp.length; i++){ group = sp[i].substring(0.1); //どのグループに所属しているか調べる for( j = 0; j < alpha.length; j++){ //一致したグループの配列にカウント+1していく if(group == array[j][0]{ array[j][1]++; } } } メモ ・spにはグループのどこかに所属する20個のキーワードが入っていてそれをグループに振り分けている ・グループ分けには”A001”のAだけみて振り分けています したいこと ・arrayに入ったキーワードの数を降順で並び替えたい 分からない所 ・2次元配列をsortする仕方 こんな感じなんです わかる方回答お願いします。

  • FLASHでCSVを配列で読込後、読み込んだ配列を関数の外で使いたい。

    FLASHでCSVを配列で読込後、読み込んだ配列を関数の外で使いたい。 下記のスクリプトでCSVから配列を取り込みましたが、 関数の外で、「csvRows」変数の中身を見る方法が分かりません。。 var csvLoader = new LoadVars(); var theFileObj = new LoadVars(); var theFile = csvLoader.sendAndLoad("test.csv",theFileObj,GET ); var csvRows = new Array(); theFileObj.onData = function(src) { var theFileArray = src.split("\r\n").join("\n").split("\n"); var theFieldNames = theFileArray[0].split(","); var numberOfFields = theFieldNames.length; for(var j=0; j<numberOfFields; j++){ theFieldNames[j] = removeQuotes(theFieldNames[j]); } for(var i=0; i<theFileArray.length; i++){ var tempArray = theFileArray[i].split(","); csvRows.push(tempArray); } } function removeQuotes(theString){ if (theString.charAt(0) == '"' || theString.charAt(0) == "'") { return theString.substr(1, theString.length - 2); }else { return theString; } }

    • ベストアンサー
    • Flash
  • 配列からNULL以外のキーを取得したいのですが……

    配列からNULL以外のキーを取得したいです。 [0, 3]を期待しているのに、[0, 3: 3] で返ってきます。 なんででしょうか? function test(data) {  var result = [];  for (var i = 0, l = data.length; i < l; i++) {   if(data[i] !== null){    result[i] = i;   }  }  return result; } var data = ["1", null, null, "5"]; var last = test(data); console.log(last); ・console.logだから? ・もしそうなら、どうして[ 0: 1, 3: 3] ではないのでしょうか?

  • どこがエラーか確認してください…

    プログラムを作ったのですが、さまざまなエラーが出てしまいます。 与えた引数を数字と文字にわけるというプログラムです。 public class Selection { private static final char[] nch = { '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' };//0から9までの数字をchar型配列要素として定義 public static String numbersonly(String inputstr) { StringBuffer bfn = new StringBuffer(); for (int i = 0 ; i < inputstr.length(); i++) { for (int j = 0;j < nch.length() ; j++) { if(inputstr.charAt(i) == nch[j]) bfn.append(inputstr.substring(i)); //bfnにinsputstrのi番目の文字を付け足す } } return; bfn.toString(); //bfnをstring型に変えて戻り値 } //numbersonlyメソッドの場合と同様に以下も補う public static String lettersonly(String inputstr) { StringBuffer bfn =new StringBuffer(); boolean let; for (int i = 0; i < inputstr.length(); i++) { let = true; for(int j = 0; j < nch.length(); j++) { if(inputstr.charAt(i) == nch[j]) let =false; } if (let)bfn.append(inputstr.substring(i)); } return;bfn.toString(); } } はじめのchar型配列要素として定義するところでシンボルを解決できません、となっているので、そのほかのnchを使う部分(lengthメソッド、戻り値)にも影響が出ているのか、jのlengthメソッドもどちらともシンボル解決できず、それぞれreturnでは戻り値がありません、となります。

    • ベストアンサー
    • Java