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

Tích lũy phần tử mảng để tạo mảng mới trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr làm đối số thứ nhất và một số num (num <= arr.length) làm đối số thứ hai. Hàm phải cộng dồn từng mảng con liên tiếp có độ dài num của mảng arr để tạo các phần tử tương ứng của mảng mới và cuối cùng trả về mảng mới đó.

Ví dụ, nếu đầu vào là:

const arr = [1, 2, 3, 4, 5, 6];
const num = 2;

Thì đầu ra sẽ là:

const output = [3, 5, 7, 9, 11];

Giải thích kết quả

Vì 1 + 2 = 3, 2 + 3 = 5, và cứ thế...

Ví dụ

Dưới đây là mã thực hiện:

const arr = [1, 2, 3, 4, 5, 6];
const num = 2;
const accumulateArray = (arr = [], num = 1) => {
  const res = [];
  let sum = 0, right = 0, left = 0;
  for (; right < num; right++) {
    sum += arr[right];
  }
  res.push(sum);
  while (right < arr.length) {
    sum -= arr[left];
    sum += arr[right];
    right++;
    left++;
    res.push(sum);
  }
  return res;
};
console.log(accumulateArray(arr, num));

Kết quả

Đầu ra trên console:

[3, 5, 7, 9, 11]