In unserer angularjs App erhalten wir eine Reihe von Daten, die dann herausgefiltert werden müssen, um nur ein Array voller eindeutiger Daten (keine Zeichenketten) zurückzugeben. Ich habe einige der Antworten auf SO ausprobiert, aber ich denke, weil ich Daten und nicht Strings vergleiche - ich gebe andere Ergebnisse. Jede Hilfe bei der besten Vorgehensweise wäre sehr hilfreich. Rückgabe Array eindeutiger Daten von Datum Array
1
A
Antwort
1
Sie haben Recht, Datumsgleichheit unterscheidet sich von Stringgleichheit. Zwei Daten werden niemals gleich sein. Also, lassen Sie sich einfach die Daten in Strings drehen:
let dates = [new Date(), new Date('1/1/11'), new Date('1/1/11'), new Date('1/4/66')]
let uniqueDates = dates
.map(s => s.toString())
.filter((s, i, a) => a.indexOf(s) == i)
.map(s => new Date(s));
console.log(uniqueDates);
Die Logik mit indexOf
ist, dass jeder eindeutiger Wert auf seiner eigenen Position nur vorhanden sein sollte; Alle anderen sind Duplikate (s ist das aktuelle Element, i ist der aktuelle Index und a ist das Array selbst). Dann ordnen wir das Array wieder in Dates
an und geben es zurück.
1
Wenn Sie lodash verwenden:
const date1 = new Date();
const date2 = new Date();
const arr = [date1, date1, date2, date2];
const uniqueDates = _.uniqBy(arr, date => date.getTime());
Verwendet uniqBy
um sicherzustellen, dass wir Daten nach ihrem Wert zu vergleichen, und zwar nicht nur durch Objektidentität. Siehe hier: Compare two dates with JavaScript
Verwandte Themen
- 1. Select2 Daten Rückgabe String anstelle von Array
- 2. php array eindeutiger Typprüfung
- 3. Rückgabe Array von PHP-Funktion
- 4. C++, Rückgabe-Array von Funktion
- 5. Bash - Rückgabe Array von Funktion
- 6. Java: Rückgabe Array von Funktionen
- 7. Rückgabe Array in C?
- 8. Array Abfrage und Rückgabe
- 9. Underscore.js findet eindeutige Werte in einem Array von Objekten; Rückgabe eindeutiger Elemente und deren Anzahl
- 10. SQL - Rückgabe eindeutiger Zeilen für Daten mit Max erstelltem Zeitstempelwert
- 11. Rückgabe von Array von Objekten aus PDO
- 12. Rückgabe eines Array von einer generischen Klasse
- 13. Rückgabe numpy Array von einer C-Erweiterung
- 14. Eindeutiger Wert in multidimentional Array in Javascript
- 15. Rückgabe Array-Wert mit ForEach()
- 16. Bash Script-Rückgabe-Array von Funktion
- 17. Rückgabe Array anstelle von Objekt in Serializer
- 18. WCF Timeout Rückgabe fünfdimensionalen Array von String
- 19. Rückgabe zufällige int von Methode zu Array
- 20. Rückgabe von ausgewählten Elementen im Elasticsearch-Array
- 21. Alamofire Protokoll Rückgabe Array von Modellobjekten
- 22. NumPy unique() Rückgabe Array anstelle von Skalar
- 23. Überprüfen und Rückgabe von Duplikaten array php
- 24. Rückgabe Index von JSON Array zurückgegeben
- 25. Rückgabe Objekt von Array zu HTML Javascript
- 26. Rückgabe der Datenbankwerte an Array?
- 27. Rückgabe C++ - Array zu C#
- 28. Gruppieren von Daten aus Array
- 29. Rückgabe einer Liste eindeutiger Werte aus DataGridView
- 30. Array Ausgabe und Rückgabe Funktionen
danke - der Refactor Ihres Codes war das Sahnehäubchen. Ich denke, ich war zuvor zu kompliziert, indem ich die Idee, zu einer Zeichenkette zu konvertieren, zurückwarf, und dann wieder zurück – chris
Kein Problem! Wenn man darüber nachdenkt, ist es einfacher, '.toString()' durch '.getTime()' zu ersetzen. Das gibt das Datum als einfache Zahl, Epoche zurück. Cleaner und ein wenig effizienter als Strings zu vergleichen. – joh04667