2011-08-17 48 views
0

至於現在,當我準備我的數據,以通過Ajax請求被髮送到我的網絡應用程序,我只是Concat的我的JS陣列(在它們之間放置-1作爲分離器 - 值可以是正數而已,所以-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,將其添加到頁面by greasemonkey – dantuch

回答

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。這是對我的servlet解析JSON(在Java中)有幫助 - http://stackoverflow.com/questions/2255220/how-to-parse-a-json-and-turn-its-values-into-an-array – dantuch