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

ผลรวมตัวเลขติดกันใน JavaScript


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

ตัวอย่าง −

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

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

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

เลข 5 ติดกัน 3 ตัวรวมได้ 15 แล้ว 8 ติดกัน 2 ตัวรวมได้ 16 และ 4 ติดกัน 2 ตัวรวมได้ 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 ]