Это древний вопрос, которому миллион лет. Зачем снова поднимать этот античный вопрос?
Когда я сегодня просматриваю StackOverflow, всплывает этот вопрос. Как обычно, пресловутые админы StackOverflow вскоре пометили его как приостановлено, даже не удосужившись взглянуть на него поближе! и ОП мгновенно получила -4 голоса против. О боже ...
Короче говоря, вопрос заключается в том, чтобы получить уникальный элемент в массиве объектов (не примитивов, таких как целое число), кроме того, объект может быть не совсем таким! Обратите внимание на пространство, выделенное на снимке ниже!
Я немного подумал и хочу найти решение, но перед этим я погуглил и нашел так много решений:
- Как удалить дубликаты массивов в ES6 - DailyJS - Medium
- Удалить повторяющиеся значения из массива JS - 2 ответа
- JavaScript: удаление дубликатов из массива - Уильям Винсент
- И совсем недавно эта статья
Что ж, существует так много решений, но ни одно из них не работает. Все просто: «Ник» не считается «Ником»! Что? Ага, обратите внимание на пространство в хвосте!
Я определенно могу сначала обрезать пространство, а затем использовать для этого фильтр, карту, цикл, уменьшить… и другой ванильный Javascript, но это НЕ то, что я хочу. Я просто надеюсь, что у меня будет однострочное решение, чтобы все было сделано!
Пользуетесь библиотекой? Хммммм, не проблема!
Вот решения Lodash:
Если вы запустите приведенный выше код, вы обнаружите, что это не удалось! Дубликат все еще там!
Затем я пришел, чтобы дать последний шанс своей любимой библиотеке JavaScript, ramda! После проб и ошибок мы получили однострочное решение!
Запустите код здесь, чтобы увидеть, что произойдет!
Почему? Это благодаря волшебному R.eqProps! Он достаточно умен и терпим, позволяя использовать пробелы при сравнении свойств двух объектов. Так внимательны! Это происходит каждый день, ваши товарищи по команде, операторы, кто бы ни знал о таких конечных пробелах! Запустите живой код здесь!
Если хотите покопаться, вот исходный код R.eqProps!
Возьмите это однострочное решение, и теперь мир молчит, и наконец-то в вашем массиве нет близнецов!
R.uniqWith (R.eqProps, arrayWithDuplicates);