解除引用Javascript对象

时间:2013-10-19 09:03:28

标签: javascript object-literal

我有一个简单的数据结构:

var data = function () {
    return {
        users: [
            {
                _id: 1,
                firstname: 'Bob'
                posts: [
                    {
                        _id: 1,
                        text: 'Great post',
                        posted_to: [2, 3, 4]  // user id's
                    }
                ]
            }
        ]
    }
}

posted_to中取消引用用户的最佳方法是什么,这样当我访问users[0].posts[0].posted_to时,我会获得一个用户对象列表,而不仅仅是id?

1 个答案:

答案 0 :(得分:1)

var data =  {
    users: [
        {
            _id: 1,
            firstname: 'Bob',
            posts: [
                {
                    _id: 1,
                    text: 'Great post',
                    posted_to: [2, 3, 4]
                }
            ]
        },
        {_id:2},{_id:3},{_id:4}
    ]
}

function getUsersPostedTo() {
  var result = [];
  var postedToIds = data.users[0].posts[0].posted_to;

  for (var i = 0; i<postedToIds.length; i++) {
      var id = postedToIds[i];
      for (var j = 0; j<data.users.length; j++) {
          if (data.users[j]._id == id) {
              result.push(data.users[j]);
          }
      }
  }

  return result;
}

var users = getUsersPostedTo();

PS:我将数据功能更改为对象var。