Как удалить дубликаты объектов из Hashmap в JavaScript - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть хэш-карта, в которой я хотел бы удалить дубликаты объектов с тем же идентификатором пользователя.Может кто-нибудь сказать мне, как это сделать?Я пытался с lodash uniq, но он предназначен для массивов.Может ли кто-нибудь помочь мне, пожалуйста?

   {
     1545300600396:{name: "Mani", uniqueId: 1545300600396, userId: "-LUA49YctCb5Nf0H4Oub"},
     1545300600397:{name: "Sundar", uniqueId: 1545300600397, userId: "-LUA4TtvB4Oaaas9yiZ_"},
     1545300686269:{name: "Vetri vela", uniqueId: 1545300686269, userId: "-LUA4pFE6s_GAZ2F-ywP"},
     1545300686270:{name: "Sabarish", uniqueId: 1545300686270, userId: "-LUA57BpO-orsWfiCL__"},
     1545391149707:{name: "Mani", uniqueId: 1545391149707, userId: "-LUA49YctCb5Nf0H4Oub"}
   }

Ожидаемый результат:

   {
     1545300600396:{name: "Mani", uniqueId: 1545300600396, userId: "-LUA49YctCb5Nf0H4Oub"},
     1545300600397:{name: "Sundar", uniqueId: 1545300600397, userId: "-LUA4TtvB4Oaaas9yiZ_"},
     1545300686269:{name: "Vetri vela", uniqueId: 1545300686269, userId: "-LUA4pFE6s_GAZ2F-ywP"},
     1545300686270:{name: "Sabarish", uniqueId: 1545300686270, userId: "-LUA57BpO-orsWfiCL__"}
  }

1 Ответ

0 голосов
/ 24 декабря 2018

Вы можете перебрать свойства вашего объекта и delete дубликаты на основе временного Set:

const data = {1545300600396:{name: "Mani", uniqueId: 1545300600396, userId: "-LUA49YctCb5Nf0H4Oub"}, 1545300600397:{name: "Sundar", uniqueId: 1545300600397, userId: "-LUA4TtvB4Oaaas9yiZ_"}, 1545300686269:{name: "Vetri vela", uniqueId: 1545300686269, userId: "-LUA4pFE6s_GAZ2F-ywP"}, 1545300686270:{name: "Sabarish", uniqueId: 1545300686270, userId: "-LUA57BpO-orsWfiCL__"},1545391149707:{name: "Mani", uniqueId: 1545391149707, userId: "-LUA49YctCb5Nf0H4Oub"}};

const set = new Set;
for (const id in data) {
    if (set.has(data[id].userId)) delete data[id];
    else set.add(data[id].userId);
}

console.log(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...