我觉得自己如此接近,但我无法理解这一点。
我在Firebase中有一个包含事件的数据树,每个事件下都有一个参与者列表及其用户ID和名称。
-events
-UniqueID
-participants
-userID
facebook_id: "12345678"
display_name: "John Doe"
-userID
facebook_id: "12345678"
display_name: "John Doe"
-userID
facebook_id: "12345678"
display_name: "John Doe"
在我的路线中,我有一个解析功能,可以为安装了我的应用的用户查询Facebook API,并将friends
对象传递给控制器。
这是用户邀请朋友参加活动的页面。我想检查参与者数组并从friends
对象中删除已经在事件中的用户。
我遍历$firebaseArray
并使用lodash查找相应的ID。 Lodash的_.find返回对象(如果找到)或undefined
如果找不到。
我在这里的另一个答案中找到了这个removeItemsById
函数,但它似乎不起作用。
_.find
正常工作,因为我看到它记录匹配的项目,但它不会从对象中删除。有什么想法吗?
$scope.participants = $firebaseArray(firebase.database().ref().child("events").child($stateParams.eventID).child("participants"));
$scope.participants.$loaded().then(function(){
console.log(friends);
angular.forEach($scope.participants, function(part){
var i = _.toString(part.facebook_id);
console.log(part.facebook_id);
var f = _.find(friends, {'id': i});
console.log("f value is: " + f);
if (f) {
console.log("Found matching facebook id: " + part.facebook_id);
removeItemsById(friends, part.facebook_id);
}
})
$scope.friends = friends;
})
function removeItemsById(arr, id) {
var i = arr.length;
if (i) { // (not 0)
while (--i) {
var cur = arr[i];
if (cur.id == id) {
arr.splice(i, 1);
}
}
}
}