Это древний вопрос, которому миллион лет. Зачем снова поднимать этот античный вопрос?

Когда я сегодня просматриваю StackOverflow, всплывает этот вопрос. Как обычно, пресловутые админы StackOverflow вскоре пометили его как приостановлено, даже не удосужившись взглянуть на него поближе! и ОП мгновенно получила -4 голоса против. О боже ...

Короче говоря, вопрос заключается в том, чтобы получить уникальный элемент в массиве объектов (не примитивов, таких как целое число), кроме того, объект может быть не совсем таким! Обратите внимание на пространство, выделенное на снимке ниже!

Я немного подумал и хочу найти решение, но перед этим я погуглил и нашел так много решений:

Что ж, существует так много решений, но ни одно из них не работает. Все просто: «Ник» не считается «Ником»! Что? Ага, обратите внимание на пространство в хвосте!

Я определенно могу сначала обрезать пространство, а затем использовать для этого фильтр, карту, цикл, уменьшить… и другой ванильный Javascript, но это НЕ то, что я хочу. Я просто надеюсь, что у меня будет однострочное решение, чтобы все было сделано!

Пользуетесь библиотекой? Хммммм, не проблема!

Вот решения Lodash:

Если вы запустите приведенный выше код, вы обнаружите, что это не удалось! Дубликат все еще там!

Затем я пришел, чтобы дать последний шанс своей любимой библиотеке JavaScript, ramda! После проб и ошибок мы получили однострочное решение!

Запустите код здесь, чтобы увидеть, что произойдет!

Почему? Это благодаря волшебному R.eqProps! Он достаточно умен и терпим, позволяя использовать пробелы при сравнении свойств двух объектов. Так внимательны! Это происходит каждый день, ваши товарищи по команде, операторы, кто бы ни знал о таких конечных пробелах! Запустите живой код здесь!

Если хотите покопаться, вот исходный код R.eqProps!

Возьмите это однострочное решение, и теперь мир молчит, и наконец-то в вашем массиве нет близнецов!

R.uniqWith (R.eqProps, arrayWithDuplicates);