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]