1
有沒有辦法說類似有沒有辦法說收集[attr1 = value] .attr2 =在Javascript中的值?
User.friends[id=1].posts=data
在Javascript
,其中User.friends是朋友項目的集合,其屬性之一是「ID」?
我正在遍歷集合User.friends,它是具有3個屬性(id,posts和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;
但這似乎不工作(我認爲它只是設置一個本地值)。
這似乎返回對象的一個副本 - 但是如果我設置result.post,收集User.friends不受影響。有沒有辦法獲得匹配屬性的索引,所以我可以直接設置集合?例如User.friend [i] .post = xxx其中,我等於User.friends [id = 1]的索引 – metalaureate
不,它返回存儲實際對象的數組。我第一次忘了'[0]'。但是現在,你應該能夠操縱你的實際對象。看到這個小提琴:http://jsfiddle.net/wRV3L/你可以通過在'User.friends.indexOf()'包裝這個函數得到索引,但也許有一個更好的方式獲得索引...我' m不知道 – basilikum
我謙卑的道歉 - 這是一個錯誤的右側任務。這種方法很好用!謝謝! – metalaureate