从对象数组中按属性提取唯一对象。
给定一个对象数组,任务是通过属性返回唯一的对象。
例子:
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)