const arr1 = [
    {
        id: '1',
        title: 'one'
    },
    {
        id: '2',
        title: 'two'
    },
    {
        id: '3',
        title: 'three'
    },
    {
        id: '10',
        title: 'ten'
    }
]
const arr2 = [
    {
        id: '1',
        title: 'one'
    },
    {
        id: '10',
        title: 'ten'
    }
] 
  
  function diff(data1, data2, compare = (a, b) => a === b) {
  const arr = Array.isArray(data2) ? data2 : [...data2];
  const result = [];
  for (const n of data1) {
    if (!arr.some(m => compare(m, n))) {
      result.push(n);
    }
  }
  return result;
}
const result = diff(arr1, arr2, (a, b) => a.id === b.id);function* diff(data1, data2, key = n => n) {
  const getKey = key instanceof Function ? key : n => n[key];
  const keys = new Set(Array.from(data2, getKey));
  for (const n of data1) {
    if (!keys.has(getKey(n))) {
      yield n;
    }
  }
}
const result = [...diff(arr1, arr2, 'id')];