2016-09-29 4 views
0

Ich habe zwei Arrays.Löschen eines Objekts basierend auf der Eigenschaft

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

Ich mag ein Objekt aus dem _ARRAY_OF_FUTURE_USERS löschen, wenn eines der Objekte einen Eigenschaftswert hat, der in der pastLikedUsersArray Zeichenfolge ist.

Ich habe eine for-Schleife, die durch die Länge beider Arrays iteriert und dann diese Spleißmethode unten.

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

Ich denke jedoch, es ist ein Objekt mit einer Zeichenfolge zu vergleichen und damit nicht zu löschen. Wie kann ich erreichen, was ich will?

ich auch versucht:

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

Diese nicht

in den _ARRAY_OF_FUTURE_USERS

useruid ist eine der Eigenschaften funktionierten und die Werte sind Strings, die gerne von denen in der anderen Reihe sein könnte. Ich habe eine Fehlermeldung erhalten, dass es sich nicht um eine Funktion handelt.

In der Tat, nach mehr zu graben, scheint es, es ein löscht aber nicht die richtige, die sehr seltsam

+0

Das erste Argument zum Spleißen sollte Index des Elements sein – jcubic

Antwort

0

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

oder mit Filter:

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

das sieht vielversprechend aus. Welchen Teil sollte ich console.log ausloggen, um zu sehen, welcher gelöscht wurde? –

+0

In der ersten sollten Sie 'console.log (_ARRAY_OF_FUTURE_USERS [i])' auf der zweiten, ich denke, Sie können nicht sehen, welche wurde entfernt, aber Sie können 'console.log (_ARRAY_OF_FUTURE_USERS.slice())' vor Filter und nach und überprüfe den Unterschied. – jcubic

+0

Prost! funktioniert ein Vergnügen –

Verwandte Themen