Porovnejte dva seznamy pomocí DIFFARR: co přidat, aktualizovat a odebrat
DIFFARR(property, saved, submitted) porovná dvě pole objektů podle jedné vlastnosti a vrátí objekt se třemi seznamy:
add: objekty zsubmitted, jejichž vlastnost není vsavedupd: pro objekty, které jsou v obou,{ db, form }s uloženým a odeslaným objektemrem: hodnoty vlastnosti (ne objekty) položek zsaved, které nejsou vsubmitted
Je to obvyklý krok při ukládání upravitelného seznamu: formulář pošle celý seznam a vy potřebujete vědět, co se vytvořilo, co se změnilo a co se smazalo. Hodnoty se porovnávají pomocí ==, takže 1 a '1' jsou tatáž položka.
const saved = [
{ id: 1, name: 'Book' },
{ id: 2, name: 'Pen' },
{ id: 3, name: 'Lamp' }
];
exports.install = function() {
ROUTE('POST /sync/', sync);
};
function sync($) {
const diff = DIFFARR('id', saved, $.body.items);
$.json({
add: diff.add,
update: diff.upd.map(n => ({ id: n.db.id, from: n.db.name, to: n.form.name })),
remove: diff.rem
});
}