2016-05-13 3 views
0

hat Wenn wir so etwas wiewas tut max() Funktion zu tun in Javascript, wenn Array mehrere gleich große Zahl

array=[5,5,5,5,3,2]; 
return Math.max.Apply(Math,array); 

bekommen Wie bekomme ich es, die Zahlen aus der ersten zurückzukehren dauern, wenn ein solcher Fall auftritt.

+4

Die Funktion 'Math.max()' gibt ** eine ** Zahl zurück. Sie müßten Ihre eigene Funktion schreiben, wenn Sie eine Liste der Zahlen gleich der größten zurückgeben möchten. – Pointy

Antwort

0

Der beste Weg, dies zu tun, ist die folgende:

var a = [5,5,5,5,3,2]; 
var largest = Math.max.apply(null,a) 
var filtered = a.filter(function(item) { 
    item === largest 
}); 

Wo gefiltert wird enthalten alle größten Elemente.

In @ Clarkies Beispiel ruft er Math.max häufiger als nötig an. Sowohl in Dan als auch in Clarkies Beispiel verwenden sie Apply, was inkorrekt ist, die korrekte Funktion ist Math.max.apply und Math muss nicht als erstes Argument übergeben werden.

Im Folgenden finden Sie ein Arbeitsbeispiel:

https://jsfiddle.net/fx5ut2mm/

-1

Ändern @ sehr schöne Idee Clarkie. Wir können es laufen auf ...

var a = [5,5,5,5,3,2], 
 
    m = Math.max(...a), 
 
    f = a.filter(e => e == m); 
 
document.write("<pre>" + JSON.stringify(f) + "</pre>");

+0

Es gibt absolut keinen Hinweis darauf, dass @Ignacio Bricchi nach einer Lösung sucht, die ES2015 verwendet, oder dass er das Ergebnis in ein Dokument schreiben möchte. Diese Antwort macht Annahmen, die die Lösung komplizierter machen und daher von dem einfachen Problem, das er zu lösen versucht, weggehen. – sheeldotme

+1

@sheeldotme Sie müssen schrecklich verwirrt sein. Ihr Code beinhaltet Pfeilfunktionen und eine const-Deklaration. – Redu

+0

Ich muss gewesen sein, du hast definitiv Recht! Großer Haken, ich habe jetzt den Code geändert, um zu sein, was es eigentlich sein sollte, danke @Redu – sheeldotme

0

Um die Frage im Titel zu beantworten:

was Funktion in Javascript tut max(), wenn Array mehr gleich hat große Zahl

Die Antwort ist, nichts. Math.max() wirkt nicht auf Arrays.

Sie können ein Array übergeben, indem sie die Elemente als Argumente an max() Verbreitung:

Math.max(...[1,2,3]) // 3 

Oder, wie Sie gesehen haben, mit apply():

Math.max.apply(Math, [1,2,3]) // 3 

Wenn die Frage mehr ist:

Was macht Math.max(), wenn mehr als eine derselben maximalen Anzahl angegeben wird?

Die Antwort ist, gibt es diese Zahl:

const a = [5, 5, 5, 5, 3, 2] 
const max = Math.max(...a) 

console.log(max) // 4 

Diese Frage ist verwirrend:

Wie bekomme ich es, die Zahlen aus dem ersten zurück, wenn einem solchen Fall dauern tritt ein.

Sie möchten, dass es ein sortiertes Array zurückgibt? Von [5, 5, 5, 5, 3, 2] bis [2, 3, 5, 5, 5, 5]?

a.sort() // [2, 3, 5, 5, 5, 5] 

Sie wollen Dupes entfernt? Von [5, 5, 5, 5, 3, 2] bis [2, 3, 5]?

Array.from(new Set(a)) // [2, 3, 5] 

Können Sie Ihre Frage klären?

Verwandte Themen