2015-06-12 6 views
0

Im пытается создать структуру с Javascript следующим образом:Javascript динамическая структура с массивом или объектом

var users = { 
    user.id: { 
     session.id1: session.id1, 
     session.id2: session.id2, 
     session.id3: session.id3 
    }, 
    user.id2: { 
     session.id1: session.id1, 
     session.id2: session.id2, 
     session.id3: session.id3 
    }, 
    }; 

Что мне нужно: добавить новые сеансы и удалять их, удаляя все в порядке, но как я должен определить объект и как Могу ли я использовать новые сеансы для пользователя obejct? Вот почему ключ равен стоимости.

+0

'user.id' не может быть использована из-за' .'. '' user.id "' будет работать, но заверните его в кавычки. – GillesC

+0

или просто используйте 'user {id: {id1: ..., id2: ...}}' и 'id2: {id1: ..., id2: ...}}'. Затем вы можете добавить их как 'user.id.id1' или' user.id2.id1' – Michel

+0

Я думаю, что лучше создать класс, а затем сохранить этот объект у пользователей var –

ответ

0

Вы можете сначала создать пустой объект и заполнить его, как и когда данные поступают как

users[user.id] = {}; 

Для примера:

var users = {}; 
var user = {id : 1}; //Data received(Just an example) 
users[user.id] = {}; 
var session = {id1 : 1.1}; //Data received 
users[user.id][session.id1] = session.id1; 
console.log(JSON.stringify(users)); 
+0

Код im using: 'if (! Users [user.user_id]) { пользователей [user.user_id] = {}; } пользователей [user.user_id] [socket.id] = socket.id; ' Спасибо! Вы много помогли! –

3

Если вы хотите использовать session.id1 вместо чего-то вроде sessionId1:

Присвоить значение:

users['user.id'].['session.id1'] = value; 

Создание объекта:

var users = { 
    'user.id': { 
     'session.id1': session.id1, 
     'session.id2': session.id2, 
     'session.id3': session.id3 
    }, 
    'user.id2': { 
     'session.id1': session.id1, 
     'session.id2': session.id2, 
     'session.id3': session.id3 
    }, 
    }; 

Но я не рекомендую. Если вы единственный, кто будет работать с этим кодом, все в порядке.

+0

session.id приходит из socket.io в nodejs, также из объекта. И я хотел бы использовать значение в нем как мой ключ, а также как значение. –

0

Как насчет реорганизации объекта пользователя для хранения сеансов в виде массива и нажатия, поп и нарезать их по мере необходимости.

var users = [ 
    { 
     id:'userid', 
     sessions: [ 
      { 
       id: 'sessionid', 
       sessiondata: something 
      }, 
      { 
       id: 'sessionid', 
       sessiondata: something 
      } 
     ] 
}]; 

Этот способ может использоваться только обычными операторами массива в массиве сеансов для каждого пользователя.

+0

Что это значит? Можете ли вы указать код? Благодаря! –

+0

Обновлен с реорганизованным кодом. – ManyStylez

Смежные вопросы