Tianhe Gao

Chunky Monkey

  1. Basic Algorithm Scripting: Chunky Monkey | freeCodeCamp.org
  2. freeCodeCamp Challenge Guide: Chunky Monkey - Guide - The freeCodeCamp Forum

第一版:

 1function chunkArrayInGroups(arr, size) {
 2  let newArr = []
 3  let subArr = []
 4  if (size >= arr.length) {
 5    return (newArr = arr)
 6  } else {
 7    arr.forEach(function (elem) {
 8      console.log(elem)
 9      subArr.push(elem)
10      if (subArr.length === size) {
11        newArr.push(subArr)
12      }
13    })
14    return newArr
15  }
16}
17
18console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 5))

其他实现:

 1function chunkArrayInGroups(arr, size) {
 2  let newArr = []
 3  let subArr = []
 4
 5  for (let a = 0; a < arr.length; a++) {
 6    if (a % size !== size - 1) subArr.push(arr[a])
 7    else {
 8      subArr.push(arr[a])
 9      newArr.push(subArr)
10      subArr = []
11    }
12  }
13
14  if (subArr.length !== 0) newArr.push(subArr)
15  return newArr
16}
17
18console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4))
 1function chunkArrayInGroups(arr, size) {
 2  let newArr = []
 3
 4  for (let a = 0; a < arr.length; a += size) {
 5    newArr.push(arr.slice(a, a + size))
 6  }
 7  return newArr
 8}
 9
10console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4))
 1function chunkArrayInGroups(arr, size) {
 2  let newArr = []
 3  let i = 0
 4
 5  while (i < arr.length) {
 6    newArr.push(arr.slice(i, i + size))
 7    i += size
 8  }
 9  return newArr
10}
11
12console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4))

这段代码不太理解

1function chunkArrayInGroups(arr, size) {
2  let newArr = []
3  while (arr.length > 0) {
4    newArr.push(arr.splice(0, size))
5  }
6  return newArr
7}
8
9console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 3))

这段代码竟然用到了递归

 1function chunkArrayInGroups(arr, size) {
 2  if (arr.length <= size) return [arr]
 3  else {
 4    return [arr.slice(0, size)].concat(
 5      chunkArrayInGroups(arr.slice(size), size),
 6    )
 7  }
 8}
 9
10console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 3))

No notes link to this note

Welcome to tell me your thoughts via "email"
UP