2011-08-17 6 views
0

今のところは、私のWebアプリケーションにAjaxリクエストが送信する、私は、セパレータとして、それらの間-1を置くことで、私のJSの配列を(CONCAT - 値が正でできるだけ、そう-1は、新しい配列の開始を意味し、 )。これは私のためにちょっと醜いので、私はこれをrefatorにするのがベストプラクティスだろうと思っています。これをどのようにリファクタリングすることができますか?私は私のデータを準備するとき

var online1 = []; 
    var online2 = []; 
    var online3 = []; 
    var online4 = []; 

    for(i = 0 ; i < listOfPlayers.length ; i++) { 

     var player = listOfPlayers[i].href;    
     var uid = player.substring(player.lastIndexOf('=') + 1); 

     if(onlineStatus[i].className == "online1"){ 
      online1.push(uid); 
     } 
     if(onlineStatus[i].className == "online2"){ 
      online2.push(uid); 
     } 
     if(onlineStatus[i].className == "online3"){ 
      online3.push(uid); 
     } 
     if(onlineStatus[i].className == "online4"){ 
      online4.push(uid); 
     } 
    } 

    online1.push(-1); 
    online2.push(-1); 
    online3.push(-1); 
    online4.push(-1); 
    var result = online1.concat(online2, online3, online4); 

    //... 
    ajaxRequest.send("result="+result); 
+0

答えを呼ばれ、 'JSON'(http://en.wikipedia.org/wiki/JSON)。 – jAndy

+0

btw。 **私はHTMLページ自体を変更することはできません**、私はJavaScriptのみを使用して、Greasemonkeyのページに追加します – dantuch

答えて

2

次の2つのことを行うことができます:

  1. JSON.stringifyを使用して、それを文字列化、オブジェクトを使用してください。サーバー側のソリューションでも、JSON.parseを使用して解析できます。 JSONは最近のブラウザで利用可能で、libraryとして利用可能です。

  2. ifを汎用にします。

例えば:

var online = {1: [], 
       2: [], 
       3: [], 
       4: []}; 

for(i = 0 ; i < listOfPlayers.length ; i++) { 

    var player = listOfPlayers[i].href;    
    var uid = player.substring(player.lastIndexOf('=') + 1); 
    var number = onlineStatus[i].className.substring(6); 

    online[number].push(uid); 
} 

var result = JSON.stringify(online); 

//... 
ajaxRequest.send("result="+result); 
+1

ありがとうございます。 BTW。これは私のサーブレット(javaで)のJSONを解析するのに役立ちました - http://stackoverflow.com/questions/2255220/how-to-parse-a-json-and-turn-its-values-into-an-array – dantuch

関連する問題