# Két lista összehasonlítása a DIFFARR-ral: mit kell hozzáadni, frissíteni és eltávolítani

> A DIFFARR() segítségével összehasonlíthatja az adatbázisban mentett elemeket egy űrlap elemeivel, és megkapja a hozzáadandó, frissítendő és eltávolítandó elemeket.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: hu
Content-SHA256: b72a29736cd1ee201c8ee59b20041731809a8192228834acb1f36eb0d5a53c93
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

A `DIFFARR(property, saved, submitted)` két objektumtömböt hasonlít össze egy tulajdonság alapján, és három listát tartalmazó objektumot ad vissza:

- `add`: a `submitted` azon objektumai, amelyek tulajdonsága **nincs** a `saved`-ben
- `upd`: a mindkettőben szereplő objektumoknál `{ db, form }` a mentett és a beküldött objektummal
- `rem`: a `saved` azon elemeinek **tulajdonságértékei** (nem az objektumok), amelyek nincsenek a `submitted`-ben

Ez a szokásos lépés egy szerkeszthető lista mentésekor: az űrlap a teljes listát elküldi, Önnek pedig tudnia kell, mi jött létre, mi változott és mit töröltek. Az értékeket `==`-val hasonlítja össze, így az `1` és a `'1'` ugyanaz az elem.

```js controllers/lists.js
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
	});
}
```
