配列内の最も近い数値を決定する
配列と -1000 ~ 1000 の範囲内の数値が与えられた場合、目的は次のとおりです。指定された数値を、配列内に存在する最も近い数値に更新します。たとえば、指定された数値が 80 で、配列に [2, 42, 82, 122, 162, 202, 242, 282, 322, 362] が含まれる場合、数値は 82 に変更する必要があります。
これを達成するには、ES5 の Reduce 機能を利用できます。 Reduce 関数は、配列内の値を累積し、単一の結果を返します。この場合、これを使用して、指定された数値との差の絶対値が最小である配列内の数値を見つけることができます。
reduce 関数は、コールバックを引数として受け取ります。コールバックは単一の値を返す必要があり、前の値 (配列の最初の要素から始まる) と反復処理される現在の値の 2 つのパラメーターを取ります。
コールバックでは、次の値の間の絶対的な差を計算します。現在の値と目標 (指定された数値)。次に、この差を前の値と目標の間の絶対差と比較します。現在の値との差が小さい場合は、前の値を現在の値に更新します。
reduce 関数は配列の反復処理を続け、目標に最も近い数値を累積します。配列全体が反復処理されると、reduce 関数は最も近い数値を返します。
例:
<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>
以上がReduce 関数を使用して配列内の最も近い数値を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。