检查搜索结果是否存在多次如果是,则在Javascript中仅显示一个结果

检查搜索结果是否存在多次如果是,则在Javascript中仅显示一个结果,javascript,json,node.js,socket.io,Javascript,Json,Node.js,Socket.io,大家好。我正在使用NodeJS和SocketIO制作一个在线用户脚本。它工作正常,但我的问题是,如果用户从多个浏览器/窗口/设备连接…等等,它会显示多个结果,如: 48所以我希望48只显示一次,如果他只退出一个浏览器,而其他浏览器仍处于连接状态,则保留它们 这是我的密码: 客户端: socket.on('userslist',function(users){ var text = ""; var i; for (i = 0; i < users.length;

大家好。我正在使用NodeJS和SocketIO制作一个在线用户脚本。它工作正常,但我的问题是,如果用户从多个浏览器/窗口/设备连接…等等,它会显示多个结果,如:
48
所以我希望
48
只显示一次,如果他只退出一个浏览器,而其他浏览器仍处于连接状态,则保留它们

这是我的密码: 客户端:

socket.on('userslist',function(users){
    var text = "";
    var i;
      for (i = 0; i < users.length; i++) {
        text += users[i].user_name + "<br>";
        document.getElementById("demo").innerHTML = text;
      }
  });

我搜索了一下,但什么也没找到。

首先,对代码进行简单的优化:

socket.on('userslist',function(users){
    var text = "";
    var i;
    for (i = 0; i < users.length; i++) {
        text += users[i].user_name + "<br>";            
    }
    document.getElementById("demo").innerHTML = text; //<-- Only needs to happen once
  });

这是客户机上的一个示例,但是您可以在服务器上执行类似的操作,这取决于您是否需要知道是否存在重复项。如果没有,最好在服务器上执行,以最大限度地减少数据传输。

首先,对代码进行简单优化:

socket.on('userslist',function(users){
    var text = "";
    var i;
    for (i = 0; i < users.length; i++) {
        text += users[i].user_name + "<br>";            
    }
    document.getElementById("demo").innerHTML = text; //<-- Only needs to happen once
  });
这是客户机上的一个示例,但是您可以在服务器上执行类似的操作,这取决于您是否需要知道是否存在重复项。如果没有,最好在服务器上执行,以最大限度地减少数据传输

socket.on('userslist',function(users){
    var usersProcessed = [];
    var text = "";
    for (var i = 0; i < users.length; i++) {
        if(usersProcessed.indexOf(users[i].user_name) < 0){
            text += users[i].user_name + "<br>";       
            usersProcessed.push(users[i].user_name);
        } 
    }
    document.getElementById("demo").innerHTML = text;
  });