# Slice and Splice-Why the result is reversed?

Tell us what’s happening:

``````
function frankenSplice(arr1, arr2, n) {
// It's alive. It's alive!
let copyArr1 = arr1.slice(0);
let copyArr2 = arr2.slice(0);

copyArr1.forEach((x)=>copyArr2.splice(n,0,x));
return copyArr2;
}

frankenSplice([1, 2, 3], [4, 5], 1);
``````

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

Can someone tell me why the result of arr1 is reversed???
I got the result as `[ 4, 3, 2, 1, 5 ]`
Many thanks.

Let’s think about what we are trying to achieve with this function:

`copyArr1.forEach((x)=>copyArr2.splice(n,0,x));`

We’re taking `copyArr1` which contains `arr1` and iterating or running through each element it contains. Each time you iterate an element you’re splicing that element at nth index of `copyArr2` containing `arr2`

``````Loop
[1,2,3]
^
Add element to index 1 with copyArr[0] at second index without deleting any elements after
``````

This will put the element at the second index of `copyArr2`: `[ 4, 1, 5 ]`

The second iteration will do the same thing by adding `copyArr1[i]` to the second index again:
`[ 4, 2, 1, 5 ]`

Are you starting to see the pattern? The index isn’t changing to accomdate the order of `copyArr1` hence the reverse effect you’re encountering.

So the trick will be how would you go about determining the next index is to properly insert `arr1` elements in the correct order? I’ll give you a hint and point you to the `forEach()` docs on mdn:

The truth lies in what parameter passing with `forEach()` and how you use it.

OH!!! I understand it now!!! Thank you so much!.
Before reading your answer, I just simply used `copyArr1.reverse()` before running `copyArr1.forEach()`.
I think I know how to modify it in another way. Thank you!!