findNeedle.js (8kyu 14)

Codewars 알고리즘 풀이


Problem

  • Write a function findNeedle() that takes an array full of junk but containing one “needle”.
    • ‘needle’을 하나 포함하고 있는 배열이 있다.
    • ‘needle’의 위치를 반환한다.


Haystacks

const haystack_01 = [4, '2019', undefined, 'needle'];
const haystack_02 = ['thread', true, 'needle', 2019];
const haystack_03 = [false, 'thread', 8688, 'code'];


Solution 01

function findNeedle(haystack) {
  for (let i = 0; i < haystack.length; i++) {
    if (haystack[i] === 'needle') {
      return i;
    }
  }
}

findNeedle(haystack_01);  // 3
findNeedle(haystack_02);  // 2
findNeedle(haystack_03);  // undefined


Solution 02

function findNeedle(haystack) {
  return haystack.indexOf('needle');
}

findNeedle(haystack_01);  // 3
findNeedle(haystack_02);  // 2
findNeedle(haystack_03);  // -1

indexOf() 메소드

주어진 값이 처음으로 나타나는 위치를 반환한다.

일치하는 값이 없으면 -1을 반환한다.