基于属性删除对象

Delete an object based on property

本文关键字:删除 对象 属性 于属性      更新时间:2023-09-26

我有两个数组。

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

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

我有一个for循环,遍历两个数组的长度,然后使用下面的splice方法。

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

然而,我认为它是在比较一个对象和一个字符串,因此没有删除。我怎样才能实现我想要的?

我也试过:

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

这行不通

useruid是_ARRAY_OF_FUTURE_USERS中的一个属性,其值是字符串,类似的值可以在另一个数组中。我得到一个错误,说它不是一个函数。

事实上,在进一步挖掘后,它似乎是在删除一个而不是正确的,这很奇怪

try this:

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;
});