A Live Developer Journal

Finders Keepers Kata

Problem Statment

Create a function that looks through an array (first argument) and returns the first element in the array that passes a truth test (second argument). If no element passes the test, return undefined.

Solution

I was pretty happy with my original solution, then asked for feedback and was shown an even cooler way of doing it! Here's the cool solution:


function findElement(arr, func) {
  return arr.find(func);
}

findElement([1, 2, 3, 4], num => num % 2 === 0);

The find method returns the value of the first element in the provided array that satisfies the provided testing function.

When I first solved this problem, I didn't know that Array.find() existed, so I did it in a few extra steps, as follows:


function findElement(arr, func) {
  const test_results = arr.map(e => func(e));

  return arr[test_results.indexOf(true)];
}

findElement([1, 2, 3, 4], num => num % 2 === 0);

In the solution above, I mapped each item in the original array to a new array where each element is either true or false depending on whether the elements in the array met the conditions in the passed-in function.

Then, it returns the first element which meets the true condition.