Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ผลรวมของตัวเลขต่อเนื่องกันใน JavaScript


สมมติว่าเราต้องเขียนฟังก์ชันที่รับอาร์เรย์และส่งกลับอาร์เรย์อื่นที่มีการรวมตัวเลขที่คล้ายกันติดกันเข้าด้วยกัน

ตัวอย่างเช่น −

const array = [1, 5, 5, 5, 8, 8, 9, 1, 4, 4, 2];

ผลลัพธ์ควรเป็น −

[1, 15, 16, 9, 1, 8, 2]

5s ต่อเนื่องกันทั้งหมดรวมกันเป็น 15 จากนั้น 2 8s ติดต่อกันรวมกันเป็น 16 ในทำนองเดียวกัน 4s รวมกันไม่เกิน 8

ดังนั้น มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน เราจะใช้วิธี Array.prototype.reduce() ที่นี่เพื่อลดอาร์เรย์เดิมและสร้างอาร์เรย์ใหม่พร้อมกัน

ตัวอย่าง

const array = [1, 5, 5, 5, 8, 8, 9, 1, 4, 4, 2];
const sumConsecutive = (array) => {
   return array.reduce((acc, val) => {
      if (acc.last === val) {
         acc.arr[acc.arr.length - 1] += val;
      } else {
         acc.arr.push(val);
         acc.last = val;
      }
      return acc;
   }, { arr: [], last: undefined }).arr;
};
console.log(sumConsecutive(array));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[
   1, 15, 16, 9,
   1, 8, 2
]