有没有办法说收集 .attr2 =在Javascript中的值?

有没有办法像这样说

User.friends[id=1].posts=data 

在Javascript中,其中User.friends是Friend项目的集合,其中一个属性是'id'?

我正在遍历一个集合User.friends,它是具有3个属性(id,posts和likes)的Friend对象的集合。 内部迭代器实例variablesfriend,似乎不是通过引用传递的; 那么,我该如何在迭代器中优雅地设置父对象的属性呢?

  async.each(User.friends, function(friend, cb) { var url="https://graph.facebook.com/"+friend.id.id+"/?fields=posts&since="+ moment(postFromDate).format('YYYY-MM-DD') + '&access_token=' + User.accessToken; request.get({ url: url, json: true }, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body); //I WANT TO SET THE ACTUAL User.friend[i].posts value, //but I do not know how to get the value of 'i'? friend.posts=body.data; //this just sets local friend var cb(null); } else { console.log(error); throw error; } }); //...request.get }, function(error, result) { callback(); }); //...async_each 

对不起,如果这是一个愚蠢的问题。 任何帮助真的很感激。 我试过了:

 _.findWhere(User.friends,{id: friend.id}).posts=body.data; 

但这似乎并不工作(我认为它只是设置一个本地值)。

你可以使用filter方法:

 var result = User.friends.filter(function(item) { return item.id === 1; })[0].posts = data;