ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มที่เรียงแล้ว arr เป็นอาร์กิวเมนต์แรก และตัวเลข target เป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันควรคืนอาร์เรย์ของตัวเลขสองตัวที่มีอยู่ใน arr และใกล้ target มากที่สุด อาร์เรย์ผลลัพธ์ควรเรียงจากน้อยไปมาก
ตัวอย่างเช่น หากอินพุตคือ
Input
const arr = [1, 2, 3, 4, 5]; const target = 3;
Output
const output = [2, 3];
ตัวอย่าง
โค้ดด้านล่างนี้
const arr = [1, 2, 3, 4, 5];
const target = 3;
const findClosest = (arr = [], target = 1) => {
const size = 2;
return arr.sort((a, b) => {
const distanceA = Math.abs(a - target);
const distanceB = Math.abs(b - target);
if (distanceA === distanceB) {
return a - b;
}
return distanceA - distanceB;
}).slice(0, size).sort((a, b) => a - b);
};
console.log(findClosest(arr, target));ผลลัพธ์
[2, 3]