서울에서 김서방 찾기 js

ㄷr r요·2023년 10월 25일

오늘 알고리즘 풀이 중 만난
반드시 기억할 새로 알게된 함수
인덱스 관련 함수 두가지

서울에서 김서방 찾기

  • 문제 설명
    String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

  • 제한 사항
    seoul은 길이 1 이상, 1000 이하인 배열입니다.
    seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
    "Kim"은 반드시 seoul 안에 포함되어 있습니다.

  • 입출력 예
    seoul : ["Jane", "Kim"]
    return : "김서방은 1에 있다"

나는 배열에서 반복문을 사용하여 돌아가며 찾는 코드를 제출했다.

function solution(seoul) {
    var answer = '';
    for (let i = 0; i < seoul.length; i++) {
        if (seoul[i] === "Kim") answer = `김서방은 ${i}에 있다`
    }
    return answer;
}

그리고 다른 사람의 풀이에서 인덱스 찾는 함수들을 발견

function solution(seoul) {
    return "김서방은 " + seoul.indexOf('Kim') + "에 있다";
}

indexOf()

indexOf 함수는, 문자열(string)에서 특정 문자열(searchvalue)을 찾고,
검색된 문자열이 '첫번째'로 나타나는 위치 index를 리턴한다.

string.indexOf(searchvalue[, position])
  • searchvalue : 필수 입력값, 찾을 문자열
  • position : optional, 기본값은 0, string에서 searchvalue를 찾기 시작할 위치
  • 찾는 문자열이 없으면 -1을 리턴
  • 문자열을 찾을 때 대소문자를 구분

indexOf를 사용한 것도 간결하고 보기 좋았는데
최근에 더욱 추천되는 방식이 하나 더 있었다.

findIndex()

const solution = (seoul) => 
`김서방은 ${arr.findIndex(s => s === 'Kim')}에 있다`;

출력값은 같지만 ES6에 findIndex()가 새롭게 추가되어
현대적이고 선언적인 코드로 더 선호되고 있다고 한다.

findIndex(testFn(element[, index[, array]])[, thisArg])

메서드의 기본구문은 조금 복잡해보이지만 사용하기 편리하다.

  • testFn
    testFn은 요소가 발견되었음을 나타내는 true를 반환할 때까지 배열의 각 요소에 대해 실행하는 함수

  • testFn은 세 가지 인수를 사용
    element는 처리 중인 배열의 현재 요소
    index는 처리 중인 현재 요소의 인덱스
    배열은 findIndex()가 호출된 배열

  • thisArg
    : thisArg는 콜백을 실행할 때 사용할 선택적 객체
    thisArg 인수를 생략하면 findIndex() 함수는 undefined를 사용
    : findIndex()는 testFn이 true로 강제 변환되는 값인 truthy 값을 반환하는 항목을 찾을 때까지 배열의 모든 요소에 대해 testFn을 실행
    : findIndex()가 그러한 요소를 찾으면 즉시 요소의 인덱스를 반환


함수사용에 조금 더 익숙해지면 화살표 함수도 많이 써봐야겠군

profile
개발 공부

0개의 댓글