← Back to all posts

function insertIntoMiddle(array, item) {

}

/ Do not modify code below this line /

Modify the function to insert the given number into the exact middle of the array and return the array.

const items = insertIntoMiddle([1, 3], 2);
console.log(insertIntoMiddle([1, 3], 2), '<-- should be [1, 2, 3]');
console.log(insertIntoMiddle([1, 3, 7, 9], 5), '<-- should be [1, 3, 5, 7, 9]');

mwilki7 (1078)

Find the space you need to split in half:
`var half = Math.ceil(array.length / 2);`

Split the array at this index 'half'

Get the left half
`var leftSide = array.slice(0, half);`

Get the right half
`var rightSide = array.slice(half, array.length);`

insert a line here that pushes a new value to the left side

Now we mash the two arrays back together:
`array = leftSide.concat(rightSide);`

ash15khng (684)

Do you have any code yet? We can't just give you answers for your homework, but if you have any questions or errors we can help.

ayormeday (10)

@ash15khng
array.splice(2,1,item);
return array;

ash15khng (684)

@ayormeday That wouldn't work, as it assumes that the item is always at index 2, and replaces 1 item at index 2. Your solution is close though.

``````function insertIntoMiddle(array, item) {
let middle = array.length / 2;
array.splice(middle, 0, item);
return array;
}``````

`array.splice` takes 3 arguments, which are:

• the position or index of the item you're replacing
• the number of items you're replacing (set to 0 if you want to insert)
• the item you're replacing
So by this logic, you need to get the index of the item in the middle, (the variable `middle`), then replace 0 items at index `middle` with `item`.

Hope this helps! If it's a bit confusing, feel free to ask questions.

SixBeeps (2833)

What you want to do is create a new array with three parts: the first half of the original array, the middle number, and the last half of the original array. What language are you using?