0

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

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?

4

1 回答 1

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。

于 2013-10-19T09:30:40.297 回答