2016-09-29 119 views
0

我有两个数组。基于属性删除对象

_ARRAY_OF_FUTURE_USERS = []; // Array of objects with a property useruid 
pastLikedUsersArray = []; // Array of strings 

我想删除从_ARRAY_OF_FUTURE_USERS的对象,如果对象之一具有的属性值是在pastLikedUsersArray字符串。

我有一个for循环遍历两个数组的长度,然后这个拼接方法在下面。

_ARRAY_OF_FUTURE_USERS.splice(pastLikedUsersArray[j], 1); 

但是,我认为它是比较对象和字符串,因此不删除。我怎样才能达到我想要的?

我也试过:

_ARRAY_OF_FUTURE_USERS[i].useruid.splice(pastLikedUsersArray[j], 1); 

这不起作用

useruid是在_ARRAY_OF_FUTURE_USERS属性之一,该值是字符串,喜欢它的可能是其他数组英寸 我得到一个错误,说它不是一个函数。

事实上,更多的挖掘后,看起来它是删除一个,但不正确的,这是非常奇怪的

+0

拼接的第一个参数应该是元素 – jcubic

回答

0

试试这个:

for (var i=0; i<_ARRAY_OF_FUTURE_USERS.length; i++) { 
    if (pastLikedUsersArray.indexOf(_ARRAY_OF_FUTURE_USERS[i].useruid) != -1) { 
     _ARRAY_OF_FUTURE_USERS.splice(i, 1); 
     i--; 
    } 
} 

,或者使用过滤器:

_ARRAY_OF_FUTURE_USERS = _ARRAY_OF_FUTURE_USERS.filter(function(user) { 
    return pastLikedUsersArray.indexOf(user.useruid) != -1; 
}); 
+0

的索引,这看起来很有前途。哪个部分应该我console.log出去看看哪一个被删除? –

+0

第一个你应该在第二个console.log(_ARRAY_OF_FUTURE_USERS [i])''我认为你看不到哪一个被删除了,但是你可以运行'console.log(_ARRAY_OF_FUTURE_USERS.slice())'过滤和检查后的差异。 – jcubic

+0

干杯!工作一种享受 –