Javascript 我如何重构这个?

Javascript 我如何重构这个?,javascript,refactoring,Javascript,Refactoring,现在,当我准备通过Ajax请求将数据发送到我的web应用程序时,我只需要连接我的JS数组(在它们之间放置-1作为分隔符-值只能是正值,因此-1表示新数组的开始)。这对我来说似乎有点难看,所以我想知道重构这个的最佳实践是什么 var online1 = []; var online2 = []; var online3 = []; var online4 = []; for(i = 0 ; i < listOfPlayers.length ; i++

现在,当我准备通过Ajax请求将数据发送到我的web应用程序时,我只需要连接我的JS数组(在它们之间放置
-1
作为分隔符-值只能是正值,因此
-1
表示新数组的开始)。这对我来说似乎有点难看,所以我想知道重构这个的最佳实践是什么

    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);
var online1=[];
var online2=[];
var online3=[];
var online4=[];
对于(i=0;i
您可以做两件事:

  • 使用对象,使用
    JSON.stringify
    将其字符串化。您可以使用JSON.parse来解析它,即使存在服务器端解决方案
    JSON
    在最近的浏览器和as中可用

  • 设置为通用

  • 例如:

    var online={1:[],
    2: [],
    3: [],
    4: []};
    对于(i=0;i
    答案称为
    JSON
    ()。顺便说一句。我不能更改HTML页面本身,我只能使用JavaScript,通过greasemonkeythanks将其添加到页面中。顺便说一句,这有助于在我的servlet(java)中解析JSON-
    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);