Array Methods Coding Interview Question | Skilled.dev
Interview Question

Array Methods

Course launching August 2020

Follow me on YouTube for free coding interview videos.

Users who sign up for the email list will receive an exclusive 75% discount at launch.

Your subscription could not be saved. Please try again.
Your subscription was successful! 🤓
This lesson requires a subscription >> Upgrade

JavaScript's array methods are becoming increasingly utilized in production, with many developers preferring them over the standard for loop. The most common arrays methods include: forEach, map, filter, reduce, find, some, every, includes. You can find find a full list on MDN

You likely won't be forced to use them in an interview, and often it may even be easier to display logic using a standard for loop (as I do in this course). However, being able to integrate them into a solution can show you have command over the language and understand effective patterns.

Benefits of array methods include:

  • Succinct syntax
  • Declarative behavior
  • Enforce immutability
  • Minimize risk of side-effect behavior
  • Explicit intent (array methods have a specific purpose which gives someone reading your code more context going in)

Below you will be given different for loops code blocks, and it's your job to refactor them to use an array method.

Two methods will not be used:

  • forEach: it's more of a catch-all method that has many uses
  • reduce: this is more complex and also can be used for different intents

Question 1

const array = [1, 2, 3, 4, 5];

for (let i = 0; i < array.length; i++) {
  array[i] = array[i] * 2;
}

console.log(array); // [2, 4, 6, 8, 10];

Solution 1

const array = [1, 2, 3, 4, 5];
const solution = array.map(item => item * 2);

console.log(solution); // [2, 4, 6, 8, 10];

This is a perfect use for the map function. map is used when we to perform the same transformation on every item in an array. In this case, we multiple everything by 2.

You can recognize needing a map function if you see a for loop that makes a change to every i item. It may alter the content of the original array or create a new solution array with the updated values.

The map method returns a new array with the updated items.


Question 2

const array = [1, 2, 3, 4, 5];
const solution = [];

for (let i = 0; i < array.length; i++) {
  // Check if it's an even number
  if (array[i] % 2 === 0) {
    solution.push(array[i]);
  }
}

console.log(solution); // [2, 4];

Solution 2

const array = [1, 2, 3, 4, 5];
const solution = array.filter(item => item % 2 === 0);

console.log(solution); // [2, 4];

The filter method is used to remove items that don't match a condition specified by the callback function. If the callback returns true, the item is added to the output array. If the callback returns `false, an item is not included.

A good candidate for filter is when you use an if inside of a for loop to conditionally include items in your results.


Question 3

const array = ['Jeni', 'Bob', 'Carol'];

const isFriend = (friends, name) => {
  for (let i = 0; i < friends.length; i++) {
    const friend = friends[i];
    if (friend === name) {
      return true;
    }
  }
  return false;
}

console.log(isFriend(array, 'Carol')); // true

Solution 3

const array = ['Jeni', 'Bob', 'Carol'];

const isFriend = (friends, name) => friends.includes(name);

console.log(isFriend(array, 'Carol')); // true

The includes method will return true or false if an item exists in an array.


Question 4

const array = [
  { id: 1, name: 'Jeni' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Carol' },
];

const getFriend = (friends, id) => {
  for (let i = 0; i < friends.length; i++) {
    const friend = friends[i];
    if (friend.id === id) {
      return friend;
    }
  }
}

console.log(getFriend(array, 3).name); // Carol

Solution 4

const array = [
  { id: 1, name: 'Jeni' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Carol' },
];

const getFriend = (friends, id) => friends.find((friend) => friend.id === id);

console.log(getFriend(array, 3).name); // Carol

The find method will return the first item that matches a condition in the callback. If no items match, it will return undefined.


Question 5

const array = [2, 4, 6];

const areAllEven = (numbers) => {
  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 !== 0) {
      return false;
    }
  }
  return true;
}

console.log(areAllEven(array)); // true

Solution 5

const array = [2, 4, 6];

const areAllEven = (numbers) => numbers.every((num) => num % 2 === 0);

console.log(areAllEven(array)); // true

The every method will return true if all items match a condition. If at least one doesn't match, it will return false.


Question 6

const array = [3, 6, 9];

const atLeastOneEven = (numbers) => {
  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      return true;
    }
  }
  return false;
}

console.log(atLeastOneEven(array)); // true

Solution 6

const array = [3, 6, 9];

const atLeastOneEven = (numbers) => numbers.some((num) => num % 2 === 0);

console.log(atLeastOneEven(array)); // true

The some method will return true if at least one item matches a condition. If none match, it will return false.

Prev
Duplicate Function
Next
Build a JavaScript Promise
This lesson requires a subscription >> Upgrade

Table of Contents