· tips javascript

Did you know about JavaScript's Array.splice()?

‘Cause until yesterday, I didn’t.

If you want to know the most about it, go here. But if you just want a quick overview, you’re in the right place.

The array operation I was missing

So I already knew about push(), pop(), shift() and unshift(), the lovely methods that let you manipulate the ends of an array (again, check here if you want all the information). But I’d never thought about how to add or delete an element in the middle of an array. Turns out, that’s splice().

How does it work?

splice() takes at least 2 arguments, and up to ∞ arguments. The first argument is the index of the array that you want to start at. The second argument is the number of things you want to delete, starting with that index (0 is a totally valid number of things to delete). The remaining ∞ optional arguments are any elements you want to insert into the array, again, at that index.

splice() returns an array of the elements deleted (which is [] if no elements were deleted).

Be Careful! Because splice() works like the above array operations, it means that using it modifies the array everywhere, not just inside the function you’re using it in. So be careful.

A quick example

So let’s say you have an array of cool things:

var coolThings = ['cat', 'banana', 'dog'];

If you want to get the banana, and leave the cool things to just be animals, you can splice() it!

var edibleThings = coolThings.splice(1, 1);
console.log(coolThings);   // [ 'cat', 'dog' ]
console.log(edibleThings); // [ 'banana' ]

Neat!

One more example real quick:

var awesomeNumberSymbols = ['∞', 'i', 'cow', 'e'];
// whoops I meant 'π' not 'cow' (a common mistake for me)
var sadCow = awesomeNumberSymbols.splice(2, 1, 'π');
console.log(awesomeNumberSymbols); // [ '∞', 'i', 'π', 'e' ]
console.log(sadCow);               // [ 'cow' ]

Now that you know, you can go and splice() some things!

… Just be careful with it, okay?