以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
131. 实现_.chunk()

解法一:使用splice方法和循环

思路:先根据size计算需要分割成几组,然后循环这么多次,在每次循环中使用splice方法截取需要的数组片段,并把截取后的结果添加到result数组中。

function chunk(arr, size) {
  if (size <= 0) {
    return []
  }
  const result = []
  const len = Math.ceil(arr.length / size) // 需要分割成的组数
  for (let i = 0; i < len; i++) {
    result.push(arr.splice(0, size))
  }
  return result
}

解法二:使用slice方法和递归

思路:每次递归截取需要的数组片段,并把截取后的结果添加到result数组中,直到arr数组长度为0。

function chunk(arr, size) {
  if (size <= 0) {
    return []
  }
  if (arr.length === 0) {
    return []
  }
  const result = []
  result.push(arr.slice(0, size))
  return result.concat(chunk(arr.slice(size), size))
}

两种解法的时间复杂度都为O(n),其中解法一的空间复杂度为O(n),解法二的空间复杂度为O(n)~O(n^2)。