プロが教えるわが家の防犯対策術!

javascriptについてお聞きします。

エラーでCannot read property 'length' of undefined
と出ているのですが、console.logで出力した値は合っています。このようなエラーはよくあるのでしょうか?また、この場合どのようにすればエラーは消えるのでしょうか?分かる方解答お願いします。下記にそのスクリプトを示します。

function func2(csvData){
console.log(csvData);
return new Promise(function(resolve, reject){
var tempArray = (String(csvData)).split("\n");
var Arraylen = tempArray.length;
console.log(Arraylen); //←86と出力されています。
var csvArray = [],csvArray0 = [], csvArray1 = [], csvArray2 = [];
for(var i = 0; i<Arraylen;i++){
csvArray[i] = tempArray[i].split(",");
csvArray0[i] = csvArray[i][0];
csvArray1[i] = csvArray[i][1];
csvArray2[i] = csvArray[i][2];
}
resolve([csvArray0,csvArray1,csvArray2,Arraylen]);
});
}

A 回答 (2件)

なんのためにpromiseを返しているか不明ですが


csvData次第ですが問題なく処理されますね

<script>
var csvData=`a,b,c
11,12,13
21,22,23`;
func2(csvData).then(function(data){console.log(data)});

function func2(csvData){
console.log(csvData);
return new Promise(function(resolve, reject){
var tempArray = csvData.split("\n");
var Arraylen = tempArray.length;
console.log(Arraylen);
var csvArray = [],csvArray0 = [], csvArray1 = [], csvArray2 = [];
for(var i = 0; i<Arraylen;i++){
csvArray[i] = tempArray[i].split(",");
csvArray0[i] = csvArray[i][0];
csvArray1[i] = csvArray[i][1];
csvArray2[i] = csvArray[i][2];
}
resolve([csvArray0,csvArray1,csvArray2,Arraylen]);
});
}
</script>
    • good
    • 0

こんにちは



質問文の情報だけではわからないので、以下のほとんどが想像です。

>エラーでCannot read property 'length' of undefined
>と出ているのですが
ご提示のスクリプトでそのエラーが発生しているのではないと想像します。
ですので、情報のない回答者には回答できないでしょう。

>このようなエラーはよくあるのでしょうか?
エラーが発生するスクリプトを実行すれば、エラーが発生します。
エラーが発生しないスクリプトを実行すると、エラーは発生しません。
「よくあるか/ないか」は、実行する内容次第でしょう。

>どのようにすればエラーは消えるのでしょうか?
>分かる方解答お願いします。
ご提示のスクリプトもあまり意図がわかりませんが、そこでエラーが発生しているのではなさそうなので、「わかる方」はまずいないのではと思います。


func2の内容自体がcallback処理のように見受けられるので、その中でPromiseを用いていることの意図が不明です。
また、csvArrayとcsvArray0~2ってまったく同じ内容なのに、わざわざコピーしている理由も不明です。(後で、片方は別の内容に書き換えるのか??)

>エラーでCannot read property 'length' of undefined
>と出ているのですが
func2がどのように実行されているのか不明だし、具体的にどのような処理でエラーが発生しているのかも不明ですが、当たるも八卦で推測してみると・・・
 1)変数のスコープ外で参照しようとしている
 2)実際に値がセットされる前に参照しようとしている
といったケースあたりが、怪しそうな気がします。

1)の関連情報
https://developer.mozilla.org/ja/docs/Web/JavaSc …

2)の方は以前のご質問の回答No1を( 1)に関しては回答Np3も)
(…って、以前の回答を見たら、ほぼ同じ内容の回答だぁ)
https://oshiete.goo.ne.jp/qa/10912242.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!