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

ผลคูณของผลรวมครึ่งซ้ายและครึ่งขวาของอาร์เรย์ - JavaScript

แบ่งอาร์เรย์ (ความยาวคู่) เป็น 2 ครึ่ง คำนวณผลรวมแต่ละครึ่ง แล้วคูณกัน

ตัวอย่าง

[1, 2, 3, 4] → Left: 1+2=3, Right: 3+4=7 → 3 × 7 = 21

ตัวอย่างโค้ด

const arr = [1, 2, 3, 4];

const subArrayProduct = arr => {
  const mid = arr.length / 2;
  const leftSum = arr.slice(0, mid).reduce((a, b) => a + b, 0);
  const rightSum = arr.slice(mid).reduce((a, b) => a + b, 0);
  return leftSum * rightSum;
};

console.log(subArrayProduct(arr));

ผลลัพธ์

21

วิธีแบบ Single Pass (Reduce)

const subArrayProduct = arr => {
  const mid = arr.length / 2;
  const { left, right } = arr.reduce((acc, val, i) => {
    if (i < mid) acc.left += val;
    else acc.right += val;
    return acc;
  }, { left: 0, right: 0 });
  return left * right;
};

ใช้ slice + reduce อ่านง่ายกว่า และไม่ต้อง mutation