Ich suche, ob zwei Werte in einem Array gleich sind. Ich habe den folgenden Code geschrieben:
%Vor%Ich bin neu in Javascript, also habe ich versucht, HashMap zu verwenden, um herauszufinden, ob es ein Duplikat gibt. Ist es der beste Weg, ein Duplikat in JavaScript zu finden? oder kann ich es optimieren?
Ihre Funktion ist bereits sehr gut, abgesehen von dem Problem, dass es nur für Arrays mit Strings oder Zahlen funktioniert. Für eine schwierigere Herangehensweise, sich auch um Objekte zu kümmern, siehe diese Antwort . Ich glaube nicht, dass dies für Sie von Bedeutung ist, da Sie einen expliziten und eingeschränkten Anwendungsfall haben (Überprüfung der Identität durch die Eigenschaft value
).
Aber einige Punkte würde ich anders machen:
success
und break
aus der Schleife, sondern nur return
von der gesamten Funktion. new Object
wird normalerweise das Verknüpfungsobjekt literal {}
verwendet hashMap
auf 1
zu setzen, könnte man true
; Sie könnten auch den Gleichheitsoperator ==
weglassen und einfach nach der Wahrheit der Eigenschaft suchen. Ich würde sogar den Operator in
verwenden. Es könnte sich lohnen, die Implementierung dieser Funktion durch den Unterstrich zu überprüfen. Wenn du nur Duplikate eliminieren willst, kannst du _.uniq () verwenden, aber wenn du mehr daran interessiert bist, das zu wissen Sind Duples oder die reinen Implementierungsdetails, können Sie gerne die Quelle dieser Methode ausprobieren Das ist sehr schön dokumentiert.
Ich weiß, dass dies keine direkte Codeantwort auf die Frage ist - es gibt schon einige hier, also wäre es nicht sinnvoll, sie zu wiederholen. Aber ich dachte, es wäre erwähnenswert, da Unterstreichung eine großartige Utility-Bibliothek ist und die Quelle ein großartiger Ort ist, um mehr über gut geschriebenes Javascript zu lernen.
Es scheint, dass Sie die Duplikate nicht finden wollen, nur um zu sehen, ob es welche gibt?
Sie sind ziemlich nah, hier ist eine funktionierende Funktion;
%Vor% Die Unterstriche im assoziativen Array sind notwendig, um numerische Werte zu speichern. Die hasDuplicates()
-Funktion arbeitet nur Objekte, die eine toString()
-Methode haben.
Nach Duplikaten suchen;
%Vor%Tags und Links javascript