# Some question on Intermediate Algorithm Scripting - Drop it

Tell us what’s happening:
hello everyone, I would like to ask some questions here. below is the code from the solutions from the hints.

my first question is why do we need to add

``````let originalLen = arr.length
``````

in the code?

I tried to remove it and use

``````for (let i = 0; i < arr.length; i++)
``````

instead but it didn’t let me pass one test which is
`dropElements([1, 2, 3, 4], function(n) {return n > 5;})` should return `[]` .
could someone please explain why do we need to add let originalLen code and why it won’t pass one of the test if we didn’t add the let originalLen?

second question is
why is the if function use `arr[0]` instead of `arr[i]` i tried to change the 0 to i and it only pass 2 out of 6 test.
as far as my understanding arr[0] will only shows the first item in the array while arr[i] will reiterate each item in the array which what we needs.
what did i miss here?

Your code so far

``````function dropElements(arr, func) {
let originalLen = arr.length;
for (let i = 0; i < originalLen; i++) {
if (func(arr[0])) {
break;
} else {
arr.shift();
}
}
return arr;
}

console.log(dropElements([1, 2, 3, 4], function(n) {return n >= 3;}));
``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36`

Challenge: Intermediate Algorithm Scripting - Drop it

Link to the challenge:

This isn’t a great solution. Mutating an array as you iterate like this is messy.

You can tell this is an antipattern because the iteration variable i is never used.

Basically, there are originalLen possible elements that you may need to check.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.