有没有办法说像

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


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

我正在遍历User.friends集合,该集合是具有3个属性(id,post和likes)的Friend对象的集合。内部迭代器实例变量friend似乎是按值传递的,而不是按引用传递的;那么,如何从迭代器中优雅地设置父对象的属性?

    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;

10-04 22:30
查看更多