Viết hàm nhận mảng số và số n (n >= bất kỳ số nào trong mảng). Chia mảng thành các mảng con khi tổng các phần tử liên tiếp vượt quá n.
Ví dụ:
// Input: [2, 1, 2, 1, 1, 1, 1, 1], n = 4// Output: [[2, 1], [2, 1, 1], [1, 1, 1]]
Sử dụng reduce() theo dõi tổng hiện tại:
Ví dụ
const arr = [2, 1, 2, 1, 1, 1, 1, 1];const splitArray = (arr, num) => { return arr.reduce((acc, val, ind) => { let { sum, res } = acc; if (ind === 0) { return { sum: val, res: [[val]] }; } if (sum + val <= num) { res[res.length - 1].push(val); sum += val; } else { res.push([val]); sum = val; } return { sum, res }; }, { sum: 0, res: [] }).res;};console.log(splitArray(arr, 4));console.log(splitArray(arr, 5));Kết quả
Đầu ra trong console sẽ là:
[ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ][ [ 2, 1, 2 ], [ 1, 1, 1, 1, 1 ] ]