根据属性删除对象

时间:2016-09-29 12:20:51

标签: javascript arrays splice

我有两个数组。

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

如果其中一个对象的属性值在pastLikedUsersArray字符串中,我想从_ARRAY_OF_FUTURE_USERS中删除一个对象。

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

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

但是,我认为它是将对象与字符串进行比较,因此不会删除。我怎样才能实现我的目标?

我也尝试过:

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

这不起作用

useruid是_ARRAY_OF_FUTURE_USERS中的一个属性,值是字符串,其中的字符串可能位于另一个数组中。 我得到一个错误,说这不是一个功能。

事实上,经过多次挖掘,它似乎正在删除一个但不是正确的一个非常奇怪

1 个答案:

答案 0 :(得分: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;
});