Wie sich herausstellt, ist das Löschen eines Array-Elements nicht so einfach wie das Löschen einer Variablen; siehe here. Das "gelöschte" Element wird nicht gelöscht, sondern erhält einen undefinierten Wert, während die Länge des Arrays gleich bleibt.
Einige hilfreiche Hinweise gefunden here.
Die splice() -Methode ändert den Inhalt eines Arrays durch Entfernen vorhandenen Elemente und/oder das Hinzufügen neuer Elemente: So können Sie array2 der splice Methode, die nach MDN handlicher macht folgendes verwenden.
folgenden Ausschnitt arbeitet unabhängig von der Reihenfolge der Elemente in jedem Array wie folgt:
var arr1 = [{
"caracname": "charles"
}, {
"caracname": "kevin"
}];
var arr2 = [{
"caracname": "charles"
}, {
"caracname": "jean"
}, {
"caracname": "kevin"
}];
var tmp1 = "",
tmp2 = "";
for (var k = 0, key = "", maxLength = arr1.length; k < maxLength; k++) {
key = Object.keys(arr1[k])[0];
for (var j = 0, maxLength_2 = arr2.length; j < maxLength_2; j++) {
tmp2 = arr2[j][key];
tmp1 = arr1[k][key];
if (tmp2 === tmp1) {
arr2.splice(j, 1);
maxLength_2--; // array2 length now one less
break;
}// end if
}// end inner-for
}// end outer-for
console.log(arr2);
I Dieses Beispiel überarbeitet haben, nachdem der Code here ausgeführt wird, zu verändern einige Variablennamen als Ergebnis.
Nebenbei sollten Sie Ihre Arrays mit var oder optional deklarieren lassen; mehr Infos here und here.
Mögliche duplizieren von [Vergleiche zwei Javascript-Arrays und entferne Duplikate] (https: // stackoverflow.com/questions/14930516/compare-two-javascript-arrays-and-remove-duplikate) –