Jaki jest skuteczny sposób identyfikowania zduplikowanego elementu w postaci tablicy tablic?Znajdź duplikat macierzy wewnątrz tablicy
var array = [
[
11.31866455078125,
44.53836644772605
],
[ // <-- Here's the duplicate
11.31866455078125,
44.53836644772605
],
[
11.371536254882812,
44.53836644772605
],
[
11.371536254882812,
44.50140292110874
]
]
Pracuję nad tym z lodash
jako zaakceptowanej uzależnienia i uzyskać jak tylko zwrotu „unikalne” listy używając _.uniqWith
i _.isEqual
:
_.uniqWith(array,_.isEqual)
Z dałoby " unikalna "wersja listy:
[
[ 11.31866455078125, 44.53836644772605 ],
[ 11.371536254882812, 44.53836644772605 ],
[ 11.371536254882812, 44.50140292110874 ]
]
Ale zamiast tylko zgłaszać unikalne elementy, potrzebuję tylko elementu, który jest duplikowany, i idealnie t indeks pierwszego wystąpienia.
Czy jest to faktycznie uwzględnione w bibliotece lodash
za pomocą jakiejś kombinacji metod, których mi brakuje? Czy po prostu będę musiał żyć z pisaniem pętli do porównywania elementów.
Prawdopodobnie tylko przemęczony tym, więc świeże spojrzenie na problem byłoby mile widziane.
starając się nie przepisać funkcje jeśli istnieją metody biblioteki, które pasować, tak ja w zasadzie jestem zatrzymany z:
Wracając tylko duplikat lub przynajmniej różnicę porównania z listy „unikalny”.
Zasadniczo identyfikując "indeks" tablicy w tablicy. Chociaż przypuszczam, że może to być zmniejszenie filtru z
_.isEqual
po zidentyfikowaniu zduplikowanego elementu.
Próbuje również w celu uniknięcia tworzenia obiektu Hash/MAP i zliczanie wystąpień kluczy tutaj jak dobrze, albo przynajmniej nie jako odrębny przedmiot, a jako coś, co można zrobić funkcjonalnie „in-line”.
Po dalszym spojrzeniu znalazłem swoją literówkę i przyjrzałem się kodowi i zrozumiałem, co tu robisz. Nie mogę powiedzieć, że jestem zbyt szczęśliwy z używania '.slice()', aby kontynuować rozwijanie listy, ale czuje się ona czystsza niż tylko indeksowane pętle. Rozmyślam to. –
@NeilLunn '_.findIndex (collection.slice (0, index), equal)! == -1;' można zredukować do instrukcji 'findIndex' do iteracji tylko raz. Ale obecne podejście ma być zwarte. –
Coś, o czym myślałem. I tak dostałeś mój głos. Wciąż po prostu oczyszczam głowę i rozważam opcje. Tak jak powiedziałem, jest to czystsze kodowane podejście niż inne. –