const getNew = (oldList, newList, getId) => { return newList.filter(i => !oldList.some(o => getId(o) === getId(i))); }; const getChanged = (oldList, newList, getId, getLastModified) => { return newList.filter(i => { const old = oldList.filter(o => getId(o) == getId(i))[0]; if (old && getLastModified(i) > getLastModified(old)) { return true; } }); }; // deleted items is just the lists reversed const getDeleted = (oldList, newList, getId) => { return getNew(newList, oldList, getId); }; const getId = (item) => { return item.id; }; const getLastModified = (item) => { return item.lastModified; }; const dateAdd = function (date, ms) { return new Date(date.getTime() + ms); }; const run = () => { let newDate = new Date(); let oldList = [ { id: 1, lastModified: newDate }, { id: 2, lastModified: newDate }, { id: 3, lastModified: newDate }, { id: 4, lastModified: newDate }, { id: 5, lastModified: newDate }, ]; let newList = [ { id: 6, lastModified: newDate }, { id: 2, lastModified: newDate }, { id: 3, lastModified: dateAdd(newDate, 10000) }, { id: 5, lastModified: newDate }, { id: 7, lastModified: newDate }, ]; console.log('new', getNew(oldList, newList, getId)); console.log('changed', getChanged(oldList, newList, getId, getLastModified)); console.log('deleted', getDeleted(oldList, newList, getId)); }; run();
181900cookie-checkJavascript: Get New/Changed/Deleted items of lists