2011-08-17 11 views
0

내 웹 애플 리케이션에 대한 Ajax 요청에 의해 데이터를 전송할 준비가되면, 나는 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 만 사용하여 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. 이것은 내 서블릿 (자바)에서 JSON 구문 분석에 도움이되었다 - http://stackoverflow.com/questions/2255220/how-to-parse-a-json-and-turn-its-values-into-an-array – dantuch

관련 문제