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

Cách chuyển mảng thành mảng phức tạp (complex array) JavaScript

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 ] ]