
読み込んだテキストファイルの数字を使って計算するにはどうしたらいいのでしょうか?
以下のコードを使って、サーバーにあるテキストファイルを読み込み、新しく作成した2つの配列に格納しました。ただ最後の「格納データの表示」ではこの作成した配列要素が表示できません。「データを配列に格納」のファンクション内では、配列作成時にvarを使わずスコープをglobalにしたつもりです。
目的としては、このテキストファイルにある数字を使っていろいろと計算できればと考えてます。
助言などよろしくお願い致します。
// データのロード
function loadDataFile()
{
httpObj = createXMLHttpRequest(storeData);
if (httpObj)
{
var fname = "upload/cluster.txt";
httpObj.open("GET", fname, true);
httpObj.send(null);
}
}
// データを配列に格納
function storeData()
{
if ((httpObj.readyState == 4) && (httpObj.status == 200))
{
document.getElementById("resultData").innerText = httpObj.responseText;
// 改行
var LF = String.fromCharCode(10);
// タブ区切り
var TAB = String.fromCharCode(9);
// テキストを改行区分
var lines = httpObj.responseText.split(LF);
// データ格納配列を準備(global scope)
oArray = new Array(lines.length-1); // Origin
dArray = new Array(lines.length-1); // Destination
for (var iCnt = 0; iCnt < lines.length-1; iCnt++)
{
oArray[iCnt] = lines[iCnt].split("\t")[0];
dArray[iCnt] = lines[iCnt].split("\t")[1];
}
}else{
document.getElementById("resultData").innerText = "Loading...";
}
}
// 格納データを表示
function showData()
{
for(var j = 0; j < oArray.length; j++)
{
alert(oArray[j]);
}
}
No.1ベストアンサー
- 回答日時:
全体の流れがわかりませんが…
>「格納データの表示」ではこの作成した配列要素が表示できません
ajaxでテキストを取得してから、表示させてますか?
非同期通信になっているようなので、showDataを値の取得前に実行すれば表示されないはず。
配列定義でlines.length-1にしているのは、データの最後に必ず改行が入っていることになっているから?
いらぬお世話ですが、var TABを定義しているけれど使っていない?
テキストを数字にするには+、-の符号をつけても良いけれど、
数値の判断
http://www.ajaxtower.jp/js/global_function/index …
数値化
http://www.sasaraan.net/program/js/jsnumber.html
とかでしょうか…
ありがとうございます。
>ajaxでテキストを取得してから、表示させてますか?
>非同期通信になっているようなので、showDataを値の取得前に実行すれば表示されないはず。
つまり再度 createXMLHttpRequest を使用してデータを取得するということでしょうか?
それともevalやexecScriptを使用するということでしょうか?
初心者の質問で恐縮です。
>配列定義でlines.length-1にしているのは、データの最後に必ず改行が入っていることになっているから?
あいにくそうなんです。
>いらぬお世話ですが、var TABを定義しているけれど使っていない?
すいません。"\t"から変更すべきでした。
No.3
- 回答日時:
No1です。
ajaxで通信する場合、通信に多少なりとも時間がかかります。
それなのですぐに表示しようとしても、まだテキストを受け取っていないということがあり得ます。
例えば、
・ ・ ・
loadDataFile();
showData();
・ ・ ・
みたいなコードになっていると、値を配列に格納する前に表示処理を行うことになってしまいます。
どういう手順で(タイミングで)showData()を実行するおつもりなのかわかりませんが、とりあえず「取得できたら表示」でよいのであれば、No2様がおっしゃているようにcallback関数内(=storeData()内)で配列に格納後に実行する(=function callする)ようにすればよろしいかと思います。
実際に、どのようなタイミングにしたいのかがわかりませんが、取得前か後かを判別できるようにしておいたほうが宜しいかも。
例えば、ajax処理を1回しか行わないことがわかっているのならば、変数oArrayが定義されていれば取得済と判別できますし、何度も行う場合は処理のフラグでも設けておいてそれで判定するとかの方法もあるかも。
ありがとうございます。
一度作成したarrayは通常の変数のようにすぐアクセスできるものだと思ってました。
非同期処理をもっと勉強しなくてはとつくづく感じました。
ということは、計算もCallback関数内で行う必要があるということですね。
oArrayやdArrayが作成されるのは一回だけです。
No.2
- 回答日時:
showData() を呼び出している部分はどこにあるのでしょうか?
showData() は storeData() 内で呼び出す必要があります。
数値計算する場合は、データ型をNumber型に変換するのも忘れずに。
var number = '-10.5';
alert(typeof number); // string
number = Number(number);
alert(typeof number); // number
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- JavaScript gasについて 1 2022/05/31 21:51
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PostgreSQL PostgreSQLで"pg_dumpall -f data.sql"を使ってバックアップしたデータ 2 2022/09/19 08:14
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列番号を自動的に一括して入...
-
Ascition Script2
-
JSON形式で取得した8桁の数字を...
-
行列データ?の文字列操作につ...
-
java keyを配列で表記したい
-
配列データの利用方法
-
JavaScriptについて
-
配列をテキストデータから読み...
-
("Scripting.Dictionary")につ...
-
JSONデータを50音順でソートしたい
-
new Array(3)は配列undefined?
-
Googleスプレッドシートとスク...
-
雪を降らせるみたいな、ゆらゆ...
-
同じIDで定義した要素の配列を...
-
javascript 配列 変数名「arra...
-
ループの中でインクリメント → ...
-
16面パズルを作ったのですが、...
-
チェックボックスのlengthについて
-
Javascript 配列の使い方について
-
JavaScriptで簡単なクイズを作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
undefinedを表示させない方法は...
-
二次元配列を使って順位をだす...
-
javascriptで2つのArrayの...
-
複数のフィードの読み込みが日...
-
二次元配列の全要素の全要素を...
-
javascriptを用いて作成された...
-
("Scripting.Dictionary")につ...
-
javascriptで行を抽出したいです。
-
JavaScriptで簡単なクイズを作...
-
1から20までの整数から、重複な...
-
javascriptついてお聞きします。
-
ぷよぷよの消去アルゴリズムが...
-
配列を作って総当たりで距離を...
-
配列の数ではなく、文字列の長...
-
jQueryで文字数カウンタ(複数...
-
jQuery text()で、<br>タグも取...
おすすめ情報