สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มเช่นนี้ -
const arr = [12, 1, 4, 8, 5];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์เช่นอาร์กิวเมนต์เดียวเท่านั้น
ฟังก์ชันควรส่งคืนอาร์เรย์ของจำนวนเต็มสองจำนวนเท่านั้น -
-
จำนวนเต็มแรกควรเป็นผลรวมที่น้อยที่สุดที่เป็นไปได้ขององค์ประกอบอาร์เรย์ทั้งหมด ยกเว้นองค์ประกอบใดองค์ประกอบหนึ่ง
-
จำนวนเต็มที่สองควรเป็นผลรวมสูงสุดขององค์ประกอบอาร์เรย์ทั้งหมด ยกเว้นองค์ประกอบใดองค์ประกอบหนึ่ง
เงื่อนไขเดียวสำหรับเราคือต้องทำเช่นนี้โดยใช้ลูปเดียวเท่านั้น
ตัวอย่างเช่น −
สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็น −
const output = [18, 29];
เพราะตัวเลขที่ไม่รวมคือ 12 และ 1 ตามลำดับ
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [12, 1, 4, 8, 5]; const findExtremeNumbers = (arr = []) => { let sum = 0; let min = Infinity; let max = -Infinity; for(let i = 0; i < arr.length; i++){ const curr = arr[i]; sum += curr; if(curr > max){ max = curr; } if(curr < min){ min = curr; }; }; return [sum - max, sum - min]; }; console.log(findExtremeNumbers(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[18, 29]