11 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title
| title | 
|---|
| Chunky Monkey | 
 Remember to use
 Remember to use Read-Search-Ask if you get stuck. Try to pair program  and write your own code
 and write your own code 
 Problem Explanation:
 Problem Explanation:
Our goal for this Algorithm is to split arr (first argument) into smaller chunks of arrays with the length provided by size (second argument). There are 4 green checks (objectives) our code needs to pass in order to complete this Algorithm:
- (['a', 'b', 'c', 'd'], 2)is expected to be- [['a', 'b'], ['c', 'd']]
- ([0, 1, 2, 3, 4, 5], 3)is expected to be- [[0, 1, 2], [3, 4, 5]]
- ([0, 1, 2, 3, 4, 5], 2)is expected to be- [[0, 1], [2, 3], [4, 5]]
- ([0, 1, 2, 3, 4, 5], 4)is expected to be- [[0, 1, 2, 3], [4, 5]]
Relevant Links
 Hint: 1
 Hint: 1
The links above suggest to use Array.push(), so let's start by first creating a new array to store the smaller arrays we will soon have like this:
    var newArray = [];
try to solve the problem now
 Hint: 2
 Hint: 2
Next we'll need a for loop to loop through arr.
try to solve the problem now
 Hint: 3
 Hint: 3
Finally, we need a method to do the actual splitting and we can use Array.slice() to do that. The key to this Algorithm is understanding how a for loop, size, Array.slice() and Array.push() all work together.
try to solve the problem now
Spoiler Alert!
Solution ahead!
 Basic Code Solution:
 Basic Code Solution:
    function chunkArrayInGroups(arr, size) {
      var temp = [];
      var result = [];
      for (var a = 0; a < arr.length; a++) {
        if (a % size !== size - 1)
          temp.push(arr[a]);
        else {
          temp.push(arr[a]);
          result.push(temp);
          temp = [];
        }
      }
      if (temp.length !== 0)
        result.push(temp);
      return result;
    }
Code Explanation:
- Firstly, we create two empty arrays called tempandresult, which we will eventually return.
- Our for loop loops until ais equal to or more than the length of the array in our test.
- Inside our loop, we push to tempusingtemp.push(arr[a]);if the remainder ofa / sizeis not equal tosize - 1.
- Otherwise, we push to temp, pushtempto theresultvariable and resettempto an empty array.
- Next, if tempisn't an empty array, we push it toresult.
- Finally, we return the value of result.
Relevant Links
 Intermediate Code Solution:
 Intermediate Code Solution:
    function chunkArrayInGroups(arr, size) {
      // Break it up.
      var arr2 = [];
      for (var i = 0; i < arr.length; i+=size) {
    	arr2.push(arr.slice(i , i+size));
      }
      return arr2;
    }
Code Explanation:
- First, we create an empty array arr2where we will store our 'chunks'.
- The for loop starts at zero, increments by sizeeach time through the loop, and stops when it reachesarr.length.
- Note that this for loop does not loop through arr. Instead, we are using the loop to generate numbers we can use as indices to slice the array in the right locations.
- Inside our loop, we create each chunk using arr.slice(i, i+size), and add this value toarr2witharr2.push().
- Finally, we return the value of arr2.
Relevant Links
 Advanced Code Solution:
 Advanced Code Solution:
    function chunkArrayInGroups(arr, size) {
      // Break it up.
      var newArr = [];
      var i = 0;
      while (i < arr.length) {
        newArr.push(arr.slice(i, i+size));
        i += size;
      }
      return newArr;
    }
    chunkArrayInGroups(["a", "b", "c", "d"], 2);
Code Explanation:
- 
Firstly, we create two variables. newArris an empty array which we will push to. We also have theivariable set to zero, for use in our while loop.
- 
Our while loop loops until iis equal to or more than the length of the array in our test.
- 
Inside our loop, we push to the newArrarray usingarr.slice(i, i+size). For the first time it loops, it will look something like:newArr.push(arr.slice(1, 1+2)) 
- 
After we push to newArr, we add the variable ofsizeontoi.
- 
Finally, we return the value of newArr.
Relevant Links
 Advanced Code Solution 2:
 Advanced Code Solution 2:
    function chunkArrayInGroups(arr, size) {
      var newArr = [];
      while (arr.length) {
        newArr.push(arr.splice(0,size));
      }
      return newArr;
    }
Code Explanation:
- Firstly, we create a variable. newArris an empty array which we will push to.
- Our whileloop loops until the length of the array in our test is not 0.
- Inside our loop, we push to the newArrarray usingarr.splice(0, size).
- For each iteration of whileloop, it deletessizenumber of elements from the front ofarrand push them as an array tonewArr.
- Finally, we return the value of newArr.
Relevant Links
 Advanced Code Solution 3:
 Advanced Code Solution 3:
    function chunkArrayInGroups(arr, size) {
      if (arr.length <= size){
        return [arr];
      }
      else {
        return [arr.slice(0,size)].concat(chunkArrayInGroups(arr.slice(size),size));
      }
    }
Code Explanation:
- Array smaller than size is returned nested.
- For any array larger than size, it's splited in two. First segment is nested and concatnated with second second segment which makes a recursive call.
Relevant Links
 NOTES FOR CONTRIBUTIONS:
 NOTES FOR CONTRIBUTIONS:
 DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution. DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution.
- Add an explanation of your solution.
- Categorize the solution in one of the following categories — Basic, Intermediate and Advanced.  
- Please add your username only if you have added any relevant main contents. ( DO NOT remove any existing usernames) DO NOT remove any existing usernames)
See

Wiki Challenge Solution Templatefor reference.


