带有数组或对象的javascript动态结构

时间:2015-06-12 10:07:40

标签: javascript arrays object dynamic

我尝试使用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?这就是为什么关键等于价值。

3 个答案:

答案 0 :(得分: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
    },
  };

但我不推荐它。如果你是唯一一个使用这段代码的人,那就没关系。

答案 1 :(得分:0)

如何重构用户对象以将会话存储为数组,并根据需要进行推送,弹出和切片。

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

这种方法可以在会话数组上为每个用户使用普通的数组运算符。

答案 2 :(得分: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));