Javascript 如何解决身份证发放问题

Javascript 如何解决身份证发放问题,javascript,socket.io,Javascript,Socket.io,我有个问题。我正在用var nextId=players\u online.length提供ID但如果例如:玩家一连接到游戏,他获得id:1,第二个玩家获得id:2,那么如果第一个玩家断开连接,其他连接的玩家获得相同id:2 另外,我不能做var nextId=nextId+1因为我通过玩家的id在线[id]吸引玩家。例如:玩家连接到游戏,他得到越来越高的id player={id},但是如果其他玩家断开连接,则不会有这样的id玩家在线[10],因为断开连接的玩家阵列中没有玩家10 有什么想法吗

我有个问题。我正在用var nextId=players\u online.length提供ID但如果例如:玩家一连接到游戏,他获得id:1,第二个玩家获得id:2,那么如果第一个玩家断开连接,其他连接的玩家获得相同id:2

另外,我不能做var nextId=nextId+1因为我通过玩家的id在线[id]吸引玩家。例如:玩家连接到游戏,他得到越来越高的id player={id},但是如果其他玩家断开连接,则不会有这样的id玩家在线[10],因为断开连接的玩家阵列中没有玩家10


有什么想法吗?(不知何故,我必须给他们id,如果其他玩家不使用它,也不能让比玩家更高的玩家使用它。\u online.length)

你可以使用带整数键的JS对象,而不是数组

并生成nextId作为最大密钥+1

var连接={
“1”:{/*连接详细信息*/},
“2”:{/*连接详细信息*/},
“4”:{/*连接详细信息*/}
};
//拿到所有钥匙
var keys=Object.keys(连接);
控制台日志(键);
//检查密钥是否存在
console.log(连接中为“2”);
console.log(连接中为“3”);
//删除连接4
删除连接[“4”];
console.log(Object.keys(connections));
函数getNextId(obj){
var keys=Object.keys(obj).map(函数(键){
返回编号(键)
});
var maxKey=Math.max.apply(null,keys);
返回maxKey+1;
}
//获取下一个id
var nextId=getNextId(连接);
console.log(nextId);
//添加新连接
连接[nextId]={/*连接详细信息*/};

console.log(Object.keys(connections))
你不能使用socket.id吗?是的,我可以,但是我以后如何使用socket.id渲染播放器呢。示例:players_online[socket.id]没有socket id
io.of('/')的数组。connected
是一个引用所有已连接客户端的对象(指向
/
命名空间,这是默认名称)“是的,但我以后如何使用socket.id呈现播放器。示例:players_online[socket.id]没有socket id的数组”-仅使用对象?我从数组对象渲染玩家