2016-04-04 9 views
0

で1行の値を取得する:私の上に線を見つけるために、私は機能(jQueryのまたはJavaScript)を必要とする私はこのような3列が1つの<code>input.txt</code>ファイル持っているTXTファイルを読み、JSやjqueryの

1 0 0 
2 8 8 
3 272 280 
4 462 742 
5 702 1,444 
6 990 2,434 
7 1,326 3,760 
8 1,691 5,451 
9 2,200 7,651 
10 2,640 10,291 
... 

input.txtそして3行目の値を持つ行を私に返してください!

例:

HTMLファイル

... 
<script type="text/javascript"> 
     var numberX = document.getElementById('id_x').value; 
     //FUNCTION 
      //var result = return of the function; 
</script> 

numberX = 3,760場合、この関数は、私のファイルを開く番号を見つけて、7を返すまで、すべての最後の列をチェックし、そうresult = 7

ありがとうございましたすべての助けのために!

+0

確かにこれが可能である、と私は素晴らしいがあると確信しています理由は、テキストファイルをフラットファイルデータベースとして使用している理由です...実際のデータベース、または少なくともCSVはなぜですか? – cchambers

+0

私は同じ事を自分自身@cchambersと考えていた –

答えて

2

このような何かを試してみてください:

var xhr = new XMLHttpRequest(); 
var data = null; 

xhr.open("GET", "input.txt", true); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     data = xhr.responseText.split('\n'); 
     data = data.map(function(row) { 
      return row.split(/\s+/); 
     }); 
    } 
}; 
xhr.send(); 

var getRecord = function(lastValue) { 
    return data.find(function(row) { 
     return row[2] === lastValue; 
    })[0]; 
}; 

あなたがそうのようにそれを使用します。

getRecord('3,760') 
+0

私はあなたがどのように行を選択するのか分からなかった!なぜあなたはレコードを取得する( '3,760')を呼び出すのですか? –

+0

行の最後の数字に基づいて行番号を取得したかったようです。 getRecord関数はすべての行を調べて、渡された数値で終わるものを探します。 getRecord('10、291 ')を呼び出すと、10が返されます。私があなたの質問を誤解した場合、私は残念です。 – sadpanda

+0

いいえ、その完全、たくさんありがとう! –

0

まず、ファイルを読む方法を見つける必要があります。 XMLHttpRequestで試してみてください。

var xhttp = new XMLHttpRequest(); 
xhttp.open("GET", "input.txt", false); 
xhttp.send(); 
0

実際のファイルはXMLHttpRequestオブジェクトで処理され、結果は文字列として処理されます。

私は簡単なプランナーデモがあります。

var value = '3,760'; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open('GET', 'data.txt'); 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4) { 
    var text = xmlhttp.responseText; 
    var rows = text.split('\n'); 
    for (var i = 0; i < rows.length; i++) { 
     var columns = rows[i].split(' '); 
     for (var j = 0; j < columns.length; j++) { 
     if (columns[j] == value) 
      alert(columns[0]); 
     } 
    } 
    } 
} 
xmlhttp.send(); 

https://plnkr.co/edit/5TlTltp0TaZi98IPF8Ii?p=preview

関連する問題