Heim > Artikel > Web-Frontend > Wie finde ich mit der Reduzierfunktion die nächste Zahl in einem Array?
Bestimmen Sie die nächstgelegene Zahl in einem Array
Angesichts eines Arrays und einer Zahl im Bereich von -1000 bis 1000 besteht das Ziel darin Aktualisieren Sie die angegebene Zahl so, dass sie die nächste im Array vorhandene Zahl ist. Wenn die angegebene Zahl beispielsweise 80 ist und das Array [2, 42, 82, 122, 162, 202, 242, 282, 322, 362] enthält, sollte die Zahl in 82 geändert werden.
An Um dies zu erreichen, können wir die ES5-Reduzierungsfunktion verwenden. Die Reduzierungsfunktion akkumuliert die Werte im Array und gibt ein einzelnes Ergebnis zurück. In diesem Fall können wir damit die Zahl im Array finden, die den kleinsten absoluten Unterschied zur angegebenen Zahl aufweist.
Die Reduzierungsfunktion akzeptiert einen Rückruf als Argument. Der Rückruf sollte einen einzelnen Wert zurückgeben und zwei Parameter annehmen: den vorherigen Wert (beginnend mit dem ersten Element des Arrays) und den aktuellen Wert, über den iteriert wird.
Im Rückruf berechnen wir die absolute Differenz zwischen den aktuellen Wert und das Ziel (die angegebene Zahl). Diese Differenz vergleichen wir dann mit der absoluten Differenz zwischen dem vorherigen Wert und dem Ziel. Wenn die Differenz für den aktuellen Wert kleiner ist, aktualisieren wir den vorherigen Wert auf den aktuellen Wert.
Die Reduzierungsfunktion iteriert weiter durch das Array und akkumuliert die Zahl, die dem Ziel am nächsten kommt. Sobald das gesamte Array durchlaufen wurde, gibt die Reduzierungsfunktion die nächstliegende Zahl zurück.
Beispiel:
<code class="js">var counts = [4, 9, 15, 6, 2], goal = 5; var closest = counts.reduce(function(prev, curr) { return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev); }); console.log(closest); // Output: 6</code>
Das obige ist der detaillierte Inhalt vonWie finde ich mit der Reduzierfunktion die nächste Zahl in einem Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!