У меня есть массив под названием «игроки». и я нажимаю каждый сокет, который присоединяется к моему серверу:
players.push(socket);
Я использую этот метод для поиска других сокетов:
for (let i = 0; i < players.length; i++) {
if (socket != players[i]) {
...
}
}
но кто-то сказал мне, что этот метод неправильный, я должен сделать что-то вроде этого:
var socketID = uniqid();
if ( !players[ socketID ] ) players[ socketID ] = socket;
socket.socketID = socketID;
но я не могу этого понять, пожалуйста, объясните мне, пожалуйста :) спасибо и извините за мой плохой английский
* uniqid () генерирует случайную строку.
Итак, если мы хотим найти другие сокеты (не текущий сокет), мы должны сделать это? if (игроки [socket.socketID]! = socket.socketID) {...} верно?
в этом отношении вы можете выполнить итерацию, чтобы найти все другие сокеты
Я немного сбит с толку ... когда я регистрирую "typeof player [socketID]", он говорит Undefined. что такое игроки [socketID]? : D



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


более поздний подход хранит сокеты в строковом индексе, что может помочь вам получить доступ к объекту сокета в массиве с помощью одного выбора. например, вы можете проверить, если (player [socket.socketID]) {....}, это избавляет вас от необходимости перебирать массив