The other array methods in JavaScript
Tags: javascript, webdev, interview, tutorial
Published: 2023-09-25 04:59:56

I remember back in high school, hypothetically, a classmate could memorize all those names, such as Ruby's array methods `any` and `all`, and JavaScript's `every` and `some`, and he'd score a 95 in the exam when answering programming questions.

While I might have forgotten it is `every` and `some` in JavaScript, and got deducted 5 points each, and got 86.

```js
> ["hi", "hello"].every(e => e.includes("h"))
true

> ["hi", "hello"].every(e => e.includes("i"))
false

> ["hi", "hello"].some(e => e.includes("i"))
true

> ["hi", "hello"].some(e => e.includes("X"))
false
```

So the classmate may tell me, "you know, I know you write better code than I do, but just somehow I got a better score than you." He was just amused.

And it also could be: his 95 is an A, and my 86 is a B. He could get into a tier 1 school, and I could barely make the last of tier 1 schools, or the top of tier 2 schools.

Then back in college, I may swear that I will never let this happen. And I memorize all those words.  Does it make me a better programmer?  Not much, really.

And I noticed in terms of interviews, if the interviewers saw that you have to find out it is `every` or `some`, by asking to use Google, versus somebody who outright typed it out as if he is breathing, then he may get hired, but not you.

It also could mean, he gets a $350k TC (total compensation), while you get $300k.

So here it is, for JavaScript array methods, here they are:

EFFFMRS

The way I remember it: electronic FM Radio Service, EFMRS

so E stands for `every`, and F stands for all those `filter`, `find`, `findLast`, `findIndex`, etc, and M is the common `map`, R is the `reduce`, and S is the `some`.

So there it is. Quite easy to remember.

I was originally thinking of eFRS, as I remember FRS was a nice car, as in the photo above.

Or if you just need to remember `every`, `filter`, `some`, as opposed to Ruby's `all`, `select`, and `any`, then you can remember EFS, for Encrypted File System or something.

And with the other traditional ones:
`slice`, `concat`, `splice`, `sort`

Although, you may not need `concat` any more, as you can always do `[...arr]` or `[...arr, ...arr2]`. Remember that `slice` always creates a new array, while `sort` is in place, and it is doing a string compare, so don't call it on an array of numbers and think that it will work. Use `sort((a, b) => a - b)` instead. Some senior engineers use `sort((a, b) => a > b ? 1 : -1)` and it does not comply to the comparison function protocol and it can cause problems. `splice` is a slightly tricky one. The easy part to remember is the index and the number of items to delete, and then comma separated values to be added. The comma separated values are like `Math.max(a, b, c)`, such that if the result you want is from an array of 10,000 items, it may not work and can cause a stack overflow (if you use `Math.max(...arr)`).

So these could be most of the ones you have to remember, and presumably you already know about `push`, `pop`, `shift`, `unshift`, `reverse`, and some more like `flat`, `flatMap`.

Is `reverse` in place or not? One way to remember is, for the traditional methods, only `concat` and `slice` give back a new array. All the other ones are in place. (I consider the `map` etc, to be the newer ones that came out after the traditional ones).

I also just saw that there are new methods called `toSorted` and `toReversed`, which give you a new array.

There is also `with`, so that `[1, 3, 5, 7, 9].with(3, 123)` will give you back a new array `[1, 3, 5, 123, 9]`, which is suitable for immutability when you use React.

So you can remember these to have some advantages when interviewing.


Is it fair? I may say not. Is it happening? It seems like it is.