Giả sử, chúng ta phải viết một hàm nhận vào một mảng và trả về một mảng khác, trong đó các số tương tự liên tiếp được cộng lại với nhau.
Ví dụ -
const array = [1, 5, 5, 5, 8, 8, 9, 1, 4, 4, 2];
Đầu ra phải là -
[1, 15, 16, 9, 1, 8, 2]
Tất cả 5 giây liên tiếp được cộng tối đa 15, sau đó 2 giây liên tiếp được cộng tối đa 16 giây tương tự 4 giây được cộng tối đa 8.
Do đó, hãy viết mã cho chức năng này. Chúng tôi sẽ sử dụng phương thức Array.prototype.reduce () ở đây để giảm mảng ban đầu và đồng thời tạo một mảng mới.
Ví dụ
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));
Đầu ra
Đầu ra trong bảng điều khiển sẽ là -
[1, 15, 16, 9, 1, 8, 2]