Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ผลรวมที่ไม่นับสมาชิกหนึ่งตัวใน JavaScript

สมมติว่าเรามีอาร์เรย์จำนวนเต็ม:

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]