Hi everyone,
I was struggling to find a solution to this challenger when “by mistake” it worked; now I can’t understand the FOR LOOP logic here.
for ( var i = 0; arr.length; i+=size)
// whats the meaning of this? Cause var i isn’t < or > or <= >= arr.length.
Best regards.
Paulo.
Entire Solution below .
`function chunkArrayInGroups(arr, size) {
var secondArray = ;
for ( var i = 0; arr.length; i+=size) {
secondArray.push(arr.slice(0, size));
//secondArray.push (arr.slice(size));
arr = arr.slice(size);
}
return secondArray;
}
chunkArrayInGroups([“a”, “b”, “c”, “d”], 2);
jenovs
October 14, 2016, 12:03pm
2
Second parameter in for
loops gets evaluated before each loop, if it evaluates to truthy, loop gets executed if it is falsy , loop stops.
In each loop you are changing the array arr
by slicing it and every time arr.length
gets smaller (first it’s 4, then 2 and then 0 which evaluates to false, so the loop stops).
2 Likes
Thanks for your replied @jenovs ; I thought I was obliged to put
i < arr.lenght. // or i > arr.length
to be evaluated by > for loop
. so just to clarify:
In the first time, > ( var i = 0; arr.length; i+=size)
var i = 0,
arr.lenght = 4 ----- “the four elements for the array” ;
and in each loop i ++ by size; ok…
so in this process it doesn’t matter the size of the var i
; is this correct ? cause var i it’s not being evaluated.
jenovs
October 14, 2016, 3:29pm
4
Correct!
You can check the syntax of a for loop and you’ll see that all the expressions are optional.
So this is a valid for
loop:
var i = 0;
for ( ; ; ) {
console.log(i)
i++
if (i > 5) break;
}
1 Like
Ok; I got it.
Thanks a lot @jenovs ; I appreciated your help.