javascript - 我该如何重构这个?

标签 javascript refactoring

就目前而言,当我准备通过 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);

最佳答案

你可以做两件事:

  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);

关于javascript - 我该如何重构这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090078/

相关文章:

javascript - 使用 service worker 更新 dom

javascript - D3 TypeError : link. exit is not a function link.exit().remove();我究竟做错了什么?

visual-studio - 在 Visual Studio 中跨项目添加和删除多个引用

javascript - $() 函数未按预期工作

javascript - onclick 按钮上的用法

javascript - CSS 按钮背景图片不显示

C++ 帮助重构一个怪物类

c# - #Region 内的 Resharper 7 : Sort Method by name,

java - 设计模式 - 我应该在哪里操作从数据库检索的字符串。离它更近还是更远

c# - 为什么visual studio中的extract method命令会创建静态方法?