Chunky Monkey
- Basic Algorithm Scripting: Chunky Monkey | freeCodeCamp.org
- 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))