สมมติว่าเรามีอาร์เรย์จำนวนเต็ม:
const arr = [12, 1, 4, 8, 5];
เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ดังกล่าวเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องคืนอาร์เรย์สองตัวเลข:
- ตัวแรก: ผลรวมน้อยที่สุดของสมาชิกทั้งหมด ไม่นับสมาชิกตัวใดตัวหนึ่ง
- ตัวที่สอง: ผลรวมมากที่สุดของสมาชิกทั้งหมด ไม่นับสมาชิกตัวใดตัวหนึ่ง
เงื่อนไข: ต้องทำได้ด้วยลูป for เพียงลูปเดียว
ตัวอย่าง
สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็น:
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]