-
Notifications
You must be signed in to change notification settings - Fork 2
Algorithm Chunky Monkey
🚩 Remember to use Read-Search-Ask
if you get stuck. Try to pair program 👥 and write your own code 📝
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]]
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
Next we'll need a for loop
to loop through arr
.
try to solve the problem now
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
Solution ahead!
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;
}
🚀 Run Code
- Firstly, we create two empty arrays called
temp
andresult
, which we will eventually return. - Our for loop loops until
a
is equal to or more than the length of the array in our test. - Inside our loop, we push to
temp
usingtemp.push(arr[a]);
if the remainder ofa / size
is not equal tosize - 1
. - Otherwise, we push to
temp
, pushtemp
to theresult
variable and resettemp
to an empty array. - Next, if
temp
isn't an empty array, we push it toresult
. - Finally, we return the value of
result
.
function chunkArrayInGroups(arr, size) {
// Break it up
// It's already broken :(
arr = arr.slice();
var arr2 = [];
for(var i = 0, len = arr.length; i < len; i+=size) {
arr2.push(arr.slice(0, size));
arr = arr.slice(size);
}
return arr2;
}
🚀 Run Code
- Firstly, we slice
arr
usingarr.slice()
and create an empty array calledarr2
. - Our for loop loops until
i
is equal to or more than the length of the array in our test. We also addsize
ontoi
each time we loop. - Inside our loop, we push to
arr2
usingarr.slice(0, size)
. - After pushing to
arr2
, we letarr
equal toarr.slice(size)
. - Finally, we return the value of
arr2
.
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);
🚀 Run Code
- Firstly, we create two variables.
newArr
is an empty array which we will push to. We also have thei
variable set to zero, for use in our while loop. - Our while loop loops until
i
is equal to or more than the length of the array in our test. - Inside our loop, we push to the
newArr
array 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 ofsize
ontoi
. - Finally, we return the value of
newArr
.
If you found this page useful, you can give thanks by copying and pasting this on the main chat:
Thanks @kirah1314 @Rafase282 @jsommamtek @oshliaer for your help with Algorithm: Chunky Monkey
⚠️ 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. (:warning: DO NOT remove any existing usernames)
See 👉
Wiki Challenge Solution Template
for reference.
Learn to code and help nonprofits. Join our open source community in 15 seconds at http://freecodecamp.com
Follow our Medium blog
Follow Quincy on Quora
Follow us on Twitter
Like us on Facebook
And be sure to click the "Star" button in the upper right of this page.
New to Free Code Camp?
JS Concepts
JS Language Reference
- arguments
- Array.prototype.filter
- Array.prototype.indexOf
- Array.prototype.map
- Array.prototype.pop
- Array.prototype.push
- Array.prototype.shift
- Array.prototype.slice
- Array.prototype.some
- Array.prototype.toString
- Boolean
- for loop
- for..in loop
- for..of loop
- String.prototype.split
- String.prototype.toLowerCase
- String.prototype.toUpperCase
- undefined
Other Links