Объект сливается с массивом объекта - PullRequest
0 голосов
/ 19 сентября 2019

Я посылаю сокет на стороне сервера

socket.emit ('foundUsers', currentUser, otherUsers)

otherUsers - это массив объектов, не содержащий объекта currentUser.

currentUser - это объект, похожий на структуру объекта других пользователей, но содержащий 2-3 дополнительных параметра.

Как пользователь, я всегда получаю объект currentUser. Он никогда не бывает пустым. В currentUser проблем нет.Если других пользователей нет, я получаю пустой массив otherUsers, который является правильным.

Но проблема возникает, когда у меня есть массив otherUsers с объектом (означает, что найден хотя бы 1 другой пользователь), мой объект currentUser также присутствуетпо последнему индексу otherUsers. [{1 другой объект пользователя}, {объект currentUser}]

Я проверил на стороне сервера, я не отправляю currentUser в otherUsers.

Я пыталсяотправлять статические данные currentUser и otherUsers с сервера, но я всегда получаю их корректно.

Временное или постоянное решение, которое я использовал, - отправка отдельных сокетов currentUser и otherUsers, что прекрасно работает.

Ноя хочу знать, почему объект currentUser присутствует в последнем индексе других пользователей.

var foundUsers={
currentUser:{},
otherUsers:[]};



var getFixture = function(fixture,id){
if(fixture.GetBody().GetUserData() !== null && fixture.GetBody().GetUserData().type !== null ){
    if(fixture.GetBody().GetUserData().type=="player"){

        if(id==fixture.GetBody().GetUserData().id){
            foundUsers.currentUser={    
                    id : fixture.GetBody().GetUserData().id,
                    name : fixture.GetBody().GetUserData().name,
                    health: fixture.GetBody().GetUserData().health,
                    pos: fixture.GetBody().GetPosition(),
                    angle:fixture.GetBody().GetAngle(),
                    powerUps:fixture.GetBody().GetUserData().powerUps,
                }; 

        }else{
            foundUsers.otherUsers.push(
                {
                    id : fixture.GetBody().GetUserData().id,
                    name : fixture.GetBody().GetUserData().name,
                    health: fixture.GetBody().GetUserData().health,
                    pos: fixture.GetBody().GetPosition(),
                    angle:fixture.GetBody().GetAngle(),
                };
            );

        }

    }
}
return true;};

for (let u of users){//for loop iterating over all users

world.QueryAABB( getFixture , aabb , u.id );    

u.socket.emit('start',foundUsers.currentUser,foundUsers.otherUsers);

//resetting foundUsers
foundUsers={
    currentUser:{},
    otherUsers:[]
};}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...