
jqueryについて質問です。とある動的csvファイルからある特定の列を取り出し、grepを使って値のないものを取り除きたいと思っています。しかしunderfindとなってしまいます。どこを修正すればいいのでしょうか?
ちなみにgrepのところを削除すると、「90 247 312 149 360 NaN 110 yMin=90, yMax=360 」という値が返ってきます。
希望は「90 247 312 149 360 110 yMin=90, yMax=360 」という値が返ってきて、最終的には最終行から3つの値、「149 360 110」を取り出したいと考えております。
このcsvファイルは動的で、行数は変化します。
function loadcsv2(url) {
if (window.ActiveXObject) {
var httpObj = new ActiveXObject("Microsoft.XMLHTTP");
if (httpObj) {
httpObj.open("GET","sample2.csv", false);
httpObj.send();
}
} else if (window.XMLHttpRequest) {
httpObj = new XMLHttpRequest();
httpObj.open("GET", "sample2.csv", false);
httpObj.send(null);
}
var rows = httpObj.responseText.split("\r\n");
var dates = new Array();
var items = new Array();
items[0] = new Array();
var result = "";
var n;
for (n = 1; n < rows.length; n++) {
var fields = rows[n].split(",");
if (fields.length < 3) break;//3列目まで
dates[n] = fields[0];
items[0][n] = n==0 ? fields[1] : parseInt(fields[1]);
var datax = items[0][n]
datax = $.grep(datax,function(e){ return e;});
result += datax + "\n" ;
}
}
===【sample.csv】===
day,sizeA,sizeB
11-19,90,254
11-20,247,261
11-21,312,258
11-24,149,250
11-25,360,215
11-26,,450
11-27,110,196
No.2ベストアンサー
- 回答日時:
#1です。
「2行目以降のデータの2列目で有効な数値のうちの最大、最小値と最後の3個のデータを求める」
というものと勝手に解釈しました。
(仮変数がdataxなのに、yMax、yMinとxがyになっているのがよくわからないけれど…)
最終的に文字列が必要なのか個々のデータが必要なのかも不明ですが、とりあえずデータが取れればよいとして、
(全角空白は半角に)
var rows = [
"day,sizeA,sizeB",
"11-19,90,254",
"11-20,247,261",
"11-21,312,258",
"11-24,149,250",
"11-25,360,215",
"11-26,a,450",
"11-27,110,196"
];
var result = [];
var n;
var datax;
var yMin, yMax;
for (n = rows.length-1; n > 0; n--) {
datax = parseInt(rows[n].split(",")[1]);
if(!isNaN(datax)){
if(result.length<3) result.unshift(datax);
yMin = yMin===undefined?datax:Math.min(yMin, datax);
yMax = yMax===undefined?datax:Math.max(yMax, datax);
}
}
alert(result.join(" ") + " / yMin=" + yMin + ",yMax=" + yMax);
その他の気になった点は#1に上げたとおりです。
文章の書き方が悪く、すみませんでした。
しかし、まさにやりたいことズバリ理解して頂けて嬉しいかぎりです。
で、早速例にならって実行してみましたが・・・
全く何も表示されず(IE、Firefox)、エラーすらも返されませんでした。
もうお手上げです(T_T)
お助けを・・・
No.3
- 回答日時:
#2です。
>全く何も表示されず(IE、Firefox)、エラーすらも返されませんでした。
>もうお手上げです(T_T)
#2の例のままで動作しないということでしょうか?
(その場合は、エラー表示ぐらいは出ると思うのですが…)
それとも、実装したら動かないということでしょうか?
その場合は、#1、#2にも書きましたが、特に怪しそうなのはajaxでのデータの受け取り方あたりかと…
(どのような実装なのかわかりませんので、ヤマカンですが)
失礼致しました。
自分の入力ミスで無事動作いたしました。
あとは自力で実装してみて頑張ってみます。
この度はご面倒をおかけしてすみませんでした。
もっと精進したいと思います。
No.1
- 回答日時:
なんかよくわかってませんが…
>最終的には最終行から3つの値、「149 360 110」を取り出したい
その他の必要なこともやっているみたいですが、何をしたいのかよくわからないので、この部分(↑)の処理の一例だけを。
有効な数字を後ろから3つとるということでよいのなら、後ろからテストしていったほうがよさそう。
なお、ご提示にならってparseInt()で数値化していますが、この場合、"119abc"などは数値として評価されます。
(全角空白は半角に)
var rows = [
"day,sizeA,sizeB",
"11-19,90,254",
"11-20,247,261",
"11-21,312,258",
"11-24,149,250",
"11-25,360,215",
"11-26,,450",
"11-27,110,196"
];
var result = [];
var n;
var fields
var datax;
for (n=rows.length-1; n>0; n--) {
fields = rows[n].split(",");
datax = parseInt(fields[1]);
if(!isNaN(datax)) result.unshift(datax);
if(result.length>2) break;
}
alert(result.join(","));
◇その他
>「90 247 312 149 360 NaN 110 yMin=90, yMax=360 」という値が返ってきます。
同じ処理を通すのなら、後ろの二つはNaNになりませんか?(最後の","はタイポと判断)
for(){ ~~ } の中で n==0 を判断しているけれど、初期値がn=1なので常にfalseになるのでは?
jQueryのgrep()は知りませんけれど、第一引数は配列なのでは?
しかも function(e){ return e; } だと、多分0も除外だけれど意図通りなのだろうか?
http://api.jquery.com/jQuery.grep/
ajaxでコールバックを用いていないようですが、タイミングが合わないのでは?
また、どうせjQueryを使うのならこの部分でも利用した方が簡略化できそう・・・
すいません、自分の質問の文章やらコードがめちゃくちゃですね。
コードは途中の
var yMin = items[0][1];
for (var j = 1; j < n; j++) {
if (items[0][j] < yMin) yMin = items[0][j];
if (items[0][j] > yMax) yMax = items[0][j];
}
result += "yMin=" + yMin + ", yMax=" + yMax + "\n";
return result;
が抜けていました。
2行目の最大値と最小値を求めています。
教えていただいたコードも考慮しながら、ちょっともう少し考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vb.netでの記述方法について 以...
-
初回訪問(アクセス)日時の取...
-
指定日数経過でHTML上のデータ...
-
JS・JqueryやWPプラグインで、...
-
1日1回だけ引けるjavascriptお...
-
google apps scriptの終了のさせ方
-
イベントが初めの一回しか起き...
-
GASでundefinedエラーが出ます
-
動的CSVファイルから値なし...
-
C#OpenCv V4にのエラーに関する...
-
XMLHttpRequestでキャッシュを...
-
Boolean型配列中のTrueの有無を...
-
投稿画像の確認画面
-
テトリス / 配列をブロックに...
-
javascriptのdocument.allにつ...
-
iframeのソースを取得したい
-
div要素内の全input要素をdisable
-
jqueryuiのdialog
-
onchangeイベントを使ってspan...
-
innerHTML実行後のイベント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、ContextMenuStripに動的...
-
ASP.NET MVCでObjectをjsに渡す
-
ローカルにあるファイルを検索...
-
C#OpenCv V4にのエラーに関する...
-
google apps scriptの終了のさせ方
-
イベントが初めの一回しか起き...
-
ジェネレーターの作り方
-
JavaScriptで文字列の特定文字...
-
javascriptでテーブルに追加し...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascriptでiframeのURL変更は?
-
翌月を取得するGASが分かりません
-
1日1回だけ引けるjavascriptお...
-
商品コードを入力で、商品名、...
-
JavaScriptで平日のみをカウン...
-
jsによって検索プルダウン、都...
-
C# 演算 奇数と偶数 表現の仕方
-
GASでundefinedエラーが出ます
-
gas スプレッドシートがアクテ...
おすすめ情報