2016-04-23 2 views
5

基本的に私は私のコードは次のように設定している:どのように.txtファイルをループし、JavaScriptで値を取得する

stop_id,stop_code,stop_name,stop_lat,stop_lon,zone_id,stop_url,location_type,parent_station,platform_code,wheelchair_boarding 

70011,70011,San Francisco Caltrain,37.77639,-122.394992,1,http://www.caltrain.com/stations/sanfranciscostation.html,0,ctsf,NB,1 

70012,70012,San Francisco Caltrain,37.776348,-122.394935,1,http://www.caltrain.com/stations/sanfranciscostation.html,0,ctsf,SB,1 
:ちょうど私を与えるだろう

function converttxttoArray(filename) 
{ 
    var reader = (window.XMLHttpRequest != null) 
       ? new XMLHttpRequest() 
       : new ActiveXObject("Microsoft.XMLHTTP"); 
    reader.open("GET", filename, false); 
    reader.send(); 
    return reader.responseText.split(/(\r\n|\n)/g); 
} 
var stop_list = converttxttoArray("../data/stops.txt"); 

    var text = ""; 
    var i; 
    for (i = 0; i < stop_list.length; i++) { 
     text += stop_list[i] + "<br>"; 
    } 

にconsole.log(テキスト)

stop_id,stop_code,stop_name,stop_lat,stop_lon,zone_id,stop_url,location_type,parent_station,platform_code,wheelchair_boarding 
70011,70011,San Francisco Caltrain,37.77639,-122.394992,1,http://www.caltrain.com/stations/sanfranciscostation.html,0,ctsf,NB,1 
70012,70012,San Francisco Caltrain,37.776348,-122.394935,1,http://www.caltrain.com/stations/sanfranciscostation.html,0,ctsf,SB,1 
70021,70021,22nd St Caltrain,37.757599,-122.39188,1,http://www.caltrain.com/stations/22ndstreetstation.html,0,ct22,NB,2 
70022,70022,22nd St Caltrain,37.757583,-122.392404,1,http://www.caltrain.com/stations/22ndstreetstation.html,0,ct22,SB,2 
70031,70031,Bayshore Caltrain,37.709537,-122.401586,1,http://www.caltrain.com/stations/bayshorestation.html,0,ctba,NB,1 
70032,70032,Bayshore Caltrain,37.709544,-122.40198,1,http://www.caltrain.com/stations/bayshorestation.html,0,ctba,SB,1 
70041,70041,So. San Francisco Caltrain Station,37.65589,-122.40487,1,http://www.caltrain.com/stations/southsanfranciscostation.html,0,ctssf,NB,2 
70042,70042,So. San Francisco Caltrain Station,37.655946,-122.405018,1,http://www.caltrain.com/stations/southsanfranciscostation.html,0,ctssf,SB,2 
70051,70051,San Bruno Caltrain,37.631128,-122.411968,1,http://www.caltrain.com/stations/sanbrunostation.html,0,ctsb,NB,1 

このファイルには、CVSのスタイルである:ここ

そして、私のstop.txtファイルの内容がどのように見えるかです。 私が望むのは、配列の各項目のstop_name、stop_id、stop_code、stop_long ....です。

javascriptの約束APIを使用すると、あなたはconverttxttoArrayRegExp/\n+/を使用することができます

+0

_「素晴らしいことだジャバスクリプトプロミスAPIを使用して、」_ Promise' 'の使用をする必要がありません元の質問に記載されている期待される結果を返します。 http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call/ – guest271314

答えて

3

素晴らしいことです。 Array.prototype.shift()を削除するには、stop_list配列の最初の項目を格納します。 .split()RegExp/,/を使用して文字列を配列に変換します。 を使用して、stop_list内の最初の項目内で、"stop_name"のインデックスを取得します。 Array.prototype.map()stop_list

window.onload = function() { 

    function converttxttoArray(filename) { 
    var reader = (window.XMLHttpRequest != null) 
       ? new XMLHttpRequest() 
       : new ActiveXObject("Microsoft.XMLHTTP"); 
    reader.open("GET", filename, false); 
    reader.onload = function() { 

     var stop_list = this.responseText.split(/\n+/); 
     var re = /,/; 
     var headers = stop_list.shift().split(re); 
     var index = headers.indexOf("stop_name"); 
     var res = stop_list.map(function(val, key) { 
     return val.split(re)[index]; 
     }); 
     console.log(res); 

     var text = ""; 
     var i; 
     for (i = 0; i < stop_list.length; i++) { 
     text += res[i] + "<br>"; 
     } 
     console.log(text); 
     document.body.innerHTML = text; 

    } 
    reader.send(); 

    } 
    converttxttoArray("stops.txt"); 

} 

plnkrの残り内"stop_name"のインデックスの項目を返すパラメータとして/,/.split()http://plnkr.co/edit/dhr6hQAb151c8oFBTvqk?p=preview

+0

よくお世話になります。 ** javascript Pomise **でこれを行うことはできますか? –

+0

@ ObasiObenyOj ['Promise'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)の使用目的は何ですか? – guest271314

+0

従来の非同期タスク(XMLHttpRequest)の場合。上記のコードは素晴らしいですが、この警告が表示されます:メインスレッドの_Synchronous XMLHttpRequestは、エンドユーザーの経験に有害な影響を与えるため、非推奨です。詳細については、https://xhr.spec.whatwg.org/._ –

関連する問題