Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tổng các số liên tiếp trong JavaScript

Cần viết hàm nhận mảng và trả về mảng mới các số liên tiếp giống nhau được cộng lại.

Ví dụ:

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

Kết quả:

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

Ba số 5 liên tiếp thành 15, hai số 8 thành 16, hai số 4 thành 8.

Dùng Array.prototype.reduce() để giảm mảng gốc và xây dựng mảng mới đồng thờ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));

Kết quả

Đầu ra trong console sẽ là:

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