Tentukan Nombor Terdekat dalam Tatasusunan
Diberi tatasusunan dan nombor dalam julat -1000 hingga 1000, objektifnya adalah untuk kemas kini nombor yang diberikan untuk menjadi nombor terdekat yang terdapat dalam tatasusunan. Sebagai contoh, jika nombor yang diberikan ialah 80 dan tatasusunan mengandungi [2, 42, 82, 122, 162, 202, 242, 282, 322, 362], nombor itu hendaklah diubah suai kepada 82.
Kepada mencapai ini, kita boleh menggunakan fungsi pengurangan ES5. Fungsi pengurangan mengumpul nilai dalam tatasusunan dan mengembalikan hasil tunggal. Dalam kes ini, kita boleh menggunakannya untuk mencari nombor dalam tatasusunan yang mempunyai perbezaan mutlak terkecil daripada nombor yang diberikan.
Fungsi reduce mengambil panggilan balik sebagai hujah. Panggilan balik harus mengembalikan satu nilai dan mengambil dua parameter: nilai sebelumnya (bermula dengan elemen pertama tatasusunan) dan nilai semasa diulang.
Dalam panggilan balik, kami mengira perbezaan mutlak antara nilai semasa dan matlamat (nombor yang diberikan). Kami kemudian membandingkan perbezaan ini dengan perbezaan mutlak antara nilai sebelumnya dan matlamat. Jika perbezaan adalah lebih kecil untuk nilai semasa, kami mengemas kini nilai sebelumnya menjadi nilai semasa.
Fungsi pengurangan terus berulang melalui tatasusunan, mengumpulkan nombor yang paling hampir dengan matlamat. Setelah keseluruhan tatasusunan telah diulang, fungsi reduce mengembalikan nombor yang paling hampir.
Contoh:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Mencari Nombor Terdekat dalam Tatasusunan Menggunakan Fungsi Kurangkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!