Ich möchte dies in Vanille, ES6 JS, erreichen. Bitte keine jQuery! (Lodash ist akzeptabel!)
Grundsätzlich habe ich 2 Arrays, eines mit Objekten und eines mit IDs.
const old = [
{
id: 1,
name: 'object_1',
},
{
id: 2,
name: 'object_2',
},
];
const newIds = [1, 2, 3];
Meine aktuelle Lösung für dieses Problem ist wie gezeigt;
const difference = newIds.filter(n => !old.some(o => o.id === n));
Dies führt zur Rückgabe [3]
.
Grundsätzlich verwende ich dies derzeit, um festzustellen, ob etwas fehlt, und um es in meiner Datenbank zu erstellen, wenn es fehlt.
Dann muss ich jedoch das Gegenteil tun. Wenn etwas entfernt wird, muss ich den Artikel vergleichen und entfernen.
Das Problem dabei ist; Diese aktuelle Lösung funktioniert nur "1-Wege", daher kann ich nicht das tun, was ich oben angegeben habe.
Im Idealfall möchte ich nur eine Anweisung, ob sie erstellt oder gelöscht wird, und ich möchte nur, dass sie die IDs von Dingen zurückgibt, die in beiden Arrays fehlen.
Hoffentlich macht das Sinn.
Um die Werte zu finden, die in einem, aber nicht in dem anderen erscheinen, verwenden Sie lodashs
_.xor(array1, array2);
In Ihrem Fall:
> const _ = require('lodash');
> const old = [
... { id: 1, name: 'object_1' },
... { id: 2, name: 'object_2' },
... { id: 3, name: 'object_3' },
... { id: 4, name: 'object_4' },
... ];
> const newIds = [1, 3, 5, 7];
> _.xor(old.map(x => x.id), newIds)
[ 2, 4, 5, 7 ]
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen