📜  从对象数组中按属性提取唯一对象。

📅  最后修改于: 2022-05-13 01:56:21.204000             🧑  作者: Mango

从对象数组中按属性提取唯一对象。

给定一个对象数组,任务是通过属性返回唯一的对象。

例子:

Input: 
[ { name: 'Geeks', id: 10 },
  { name: 'GeeksForGeeks', id: 10 },
  { name: 'Geeks', id: 20 },
  { name: 'Geeks', id: 10 } ]
Output:
[ { name: 'Geeks', id: 10 }, 
  { name: 'GeeksForGeeks', id: 10 } ]

方法:假设名称作为区分对象的属性,并且如果存在多个相同名称的对象,则需要具有最小 id 号的对象。使用地图存储对象并检查是否看到类似的对象。

  • 初始化一个空地图。
  • 使用过滤器方法遍历数组。
  • 检查地图中是否有与当前对象同名的条目。
  • ----如果为真:即存在同名条目,则检查其id是否小于当前对象的id。
  • ————如果为true:即当前对象的id小于map返回的对象的id,则删除map条目,进入当前对象,返回true。
  • ————如果为false:即当前对象的id大于map返回的对象的id则返回false。
  • ----如果为false:即map中没有同名条目,则将当前对象输入到map中。
  • 打印独特的对象。

例子:


输出:

[ { name: 'Geeks', id: 10 }, 
  { name: 'GeeksForGeeks', id: 10 } ]

时间复杂度:O(n)
空间复杂度:O(n)