สมมติว่าเราต้องเขียนฟังก์ชันรับอาร์เรย์ตัวเลขและตัวเลขหนึ่ง คืนค่าที่อยู่ในอาร์เรย์และใกล้ที่สุดกับตัวเลขนั้น
เช่น
closest([45,61,53,98,54,12,69,21], 67); // 69 closest([45,61,53,98,54,12,69,21], 64); // 61
เขียนโค้ด
เราจะใช้ Array.prototype.reduce() คำนวณความต่างและคืนความต่างน้อยที่สุดจาก reduce ผลรวมของความต่างน้อยที่สุดและตัวเลขที่ค้นหาจะเป็นคำตอบ
ตัวอย่าง
const closest = (arr, num) => {
return arr.reduce((acc, val) => {
if(Math.abs(val - num) < Math.abs(acc)){
return val - num;
}else{
return acc;
}
}, Infinity) + num;
}
console.log(closest([45,61,53,98,54,12,69,21], 67));
console.log(closest([45,61,53,98,54,12,69,21], 64));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น
69 61