JS:仅从数组中提取唯一属性对象

我目前正在开发API,我需要在其中创建一个函数来提取“完全”唯一的对象,即任何对象中的属性都不匹配。

我有一个固定模式的对象数组,例如:

let arr = [
  {
    "a": "a1",
    "b": "b1",
    "c": "c1",
    "d": "d1",
    "e": "e1"
  },
  {
    "a": "a2",
    "b": "b2",
    "c": "c2",
    "d": "d2",
    "e": "e2"
  },
  {
    "a": "a3",
    "b": "b3",
    "c": "c2", // matching attribute
    "d": "d3",
    "e": "e3"
  },
  // … more objects here, maximum 200 * 33 objects
]

我希望结果为:

[
  {
    "a": "a1",
    "b": "b1",
    "c": "c1",
    "d": "d1",
    "e": "e1"
  },
  {
    "a": "a2",
    "b": "b2",
    "c": "c2",
    "d": "d2",
    "e": "e2"
  },
  // … 
]

如果属性匹配,则保留在数组中最先遇到的对象,并丢弃另一个对象。不同的属性永远不会有重叠的值。

我当前的实现:

for (let i in arr[0]) {
    let map = new Map();
    arr = arr.filter(obj => map.get(obj[i]) ? false : map.set(obj[i], true));
}
console.log(arr);

有没有更好(更有效)的方法来做到这一点?