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

การหาผลรวมคู่ของอาร์เรย์ (Pairwise Sum) ใน JavaScript

ภาพรวม

บทความนี้สาธิตวิธีสร้างอาร์เรย์ใหม่จากผลรวมของคู่ Element ที่ติดกัน (Pairwise Sum) เช่น [3,6,3,87,3,23,2,2,6,8] -> [9,90,26,4,14]

ตัวอย่าง

Indices:  (0,1)  (2,3)  (4,5)  (6,7)  (8,9)
Values:   3+6=9, 3+87=90, 3+23=26, 2+2=4, 6+8=14

การนำไปใช้

const twiceSum = (arr) => {
  const res = [];
  for (let i = 0; i < arr.length; i += 2) {
    res.push(arr[i] + (arr[i + 1] || 0));
  }
  return res;
};

console.log(twiceSum([3, 6, 3, 87, 3, 23, 2, 2, 6, 8]));

ผลลัพธ์

[9, 90, 26, 4, 14]

วิธีการทันสมัย

// ใช้ filter index แบบคู่
const pairwiseSum = (arr) => 
  arr.filter((_, i) => i % 2 === 0)
     .map((val, i) => val + (arr[2 * i + 1] || 0));

// ใช้ reduce
const pairwiseSumReduce = (arr) => 
  arr.reduce((acc, val, i) => {
    if (i % 2 === 0) acc.push(val + (arr[i + 1] || 0));
    return acc;
  }, []);

// Chunk แล้ว Sum
const chunkSum = (arr, size = 2) => 
  Array.from({ length: Math.ceil(arr.length / size) }, (_, i) =>
    arr.slice(i * size, (i + 1) * size).reduce((a, b) => a + b, 0)
  );

การประยุกต์ใช้

  • Signal Processing: Downsampling, Moving Average
  • Financial: Pair Trade Returns
  • Data Compression: Pairwise Aggregation
  • Game Development: Combine Adjacent Tiles (2048-style)

ข้อควรระวัง

  • Odd Length Array: ตัวสุดท้ายบวกกับ 0 (หรือ Undefined)
  • Empty Array: คืน []
  • Non-numeric: ควร Validate/Convert ก่อน

Generic Chunk Sum

const chunkSumGeneric = (arr, chunkSize = 2) => {
  const result = [];
  for (let i = 0; i < arr.length; i += chunkSize) {
    let sum = 0;
    for (let j = 0; j < chunkSize && i + j < arr.length; j++) {
      sum += arr[i + j];
    }
    result.push(sum);
  }
  return result;
};