2016-09-29 153 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

乾杯!工作一種享受 –