hjertnes.blog

Moving code to gists

30.11.2017 01:00

For various reasons I have moved this site over to WordPress; none of them are very important in the grand scheme of things. Anyways. I have been spending quite a lot of time trying to figure out how to best deal with code in these blog posts. And I have come to the conclusion that the best compromise between work I have to do, and the best possible expereince for you as a reader of this site is to embed GitHub Gists.

#

29.11.2017 01:00

When I wonder: why haven’t I spent much time on micro.blog this week, the answer is almost always in wakatime.

#

29.11.2017 01:00

I remember when I was very happy with like 10 good pictures out of a roll of film

Adding elements to an array

29.11.2017 01:00

I spend a lot of time on this site trying to convince people that immutable data structures are the way to go. They might be a little bit more difficult from time to time, and a little bit slower; but I believe it is worth it because when you use immutable techniques instead of mutable you know that you need to actually tell your code “replace this with this” for something to change. And I believe it is a good way to avoid a lot of annoying bugs.

The standard way to add a element to a array in Javascript is using the push method like below:

Or you could do it with concat, which is the way I prefer to do it:

The result is the same, but with the latter you can do what ever you want with the list, without worrying about fucking up the original, before you explicitly tell it to be replaced.

Splice

28.11.2017 01:00

Splice is another mehtod on the Array Prototype; it is in many ways Slice’s weird brother in law. The main difference is that splice mutates the array you run it on, while slice does not. I personally never use splice because mutation often lead to unintended circomstances.

The other thing about splice is that you can’t do all of what you can do with slice; for example the cool -1 tricks for removing stuff at the end. This is where it get’s a little bit “weird”. You can use it to remove stuff from an array. It takes a start argument and a number argument, for example like below (removing the two first elements)

But you can also feed it any number of elements after the number argument which will be inserted where you removed the elements. Splice can be very useful, but be careful, because everything is just weird enough that it is very easy to do something you didn’t want to and cause some difficult to spot bugs.

Let me end with the key differences between slice and splice:

  • Splice mutates

  • Slice doesn’t mutate

  • Slice works with start and end position

  • Splice works with a start position and a “deleteCount”.

  • Splice can also append elements.

#

27.11.2017 01:00

The emoji for American power outlets: 😮

Slice

27.11.2017 01:00

Slice is a method on the Array Prototype that you can use to extract a section of a array. Let’s say you want to remove the first two elements from a array. Then you could do something like this:

You could of course do the same with a combination of filters and map without using slice:

There aren’t much to the slice method, but the key thing is that it doesn’t mutate the array you run it on, but rather it returns a new copy. It takes two arguments: begin and end. If you don’t give it a end it treats the end as to the end of the array. And you can give it a negative number of remove things at the end. For example, like below to remove the last three elements at the end; without doing some weird .length hacks or double reversing.

Slice is a very versatile and useful method, when you need to modify a list based on position instead of content. And it much more elegant than some of the other solutions I have seen (and written) to get the same thing. Everything from something like my map + filter hack above to some more advanced uses for the old school for loop.

#

26.11.2017 01:00

My favourite thing about emacs is how easy it is to make a simple function that solves something that don’t work like you want it to, or something that takes too many steps

#

26.11.2017 01:00

Sanity is highly overrated.

#

24.11.2017 01:00