繁体   English   中英

根据属性删除对象

[英]Delete an object based on property

我有两个数组。

_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中的属性之一,值是字符串,类似的字符串可以在另一个数组中。 我收到一个错误消息,说它不是一个函数。

实际上,经过更多的挖掘,它似乎是删除一个,但不是正确的,这很奇怪

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM