프로그래머스 가장 큰 수 찾기, 숫자찾기 자바스크립트 | String/Array.prototype.indexOf(), lastIndexOf()

Chaeyeon Lee·2023년 5월 25일
0

🔅 1. 아이디어

한 줄에 끝내주마


🧑‍💻 2. 내 코드

function solution(array) {
    return [Math.max(...array), array.indexOf(Math.max(...array))];
}

🐣 3. 개념

📌 String/Array.prototype.indexOf()

위 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환한다. 일치하는 값이 없으면 -1을 반환한다. 이 -1은 false와 같지 않다!!
대소문자를 구분함에 유의!

str.indexOf(searchValue[, fromIndex])

searchValue: 주어지지 않으면 문자열 'undefined'를 찾으려는 문자열로 사용한다.

위 메서드는 주어진 값과 일치하는 첫 번째 인덱스만을 반환하므로 전체 문자열에 등장하는 모든 값을 찾기 위해선 아래와 같이 이용해야 한다.

var str = 'To be, or not to be, that is the question.';
var count = 0;
var pos = str.indexOf('e'); //pos는 4의 값을 가집니다.

while (pos !== -1) {
  count++;
  pos = str.indexOf('e', pos + 1); // 첫 번째 e 이후의 인덱스부터 e를 찾습니다.
}

console.log(count); // 로그에 4를 출력합니다.

📌 String/Array.prototype.lastIndexOf()

위 메서드는 주어진 값과 일치하는 부분을 문자열/배열로부터 역순으로 탐색하여 최초로 마주치는 인덱스를 반환. 없으면 -1 반환



indexOf 반환값 활용하기: 숫자찾기

function solution(num, k) {
    let idx=num.toString().indexOf(k+'');
    return idx!=-1 ? idx+1 : -1;
}

유의해야 할 점은, indexOf의 반환값이 어떻게 나오는지 잘 알고 있어야 한다는 것이다.
주어진 값과 일치하는 원소가 있을 경우엔 해당 인덱스를 반환하고(첫 번째로 일치하는 것만 반환), 없을 경우엔 -1을 반환한다는 것이다.
근데 왜 얘는 반환값을 false 이런 거 말고 -1로 했을까?



출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

profile
프론트엔드 개발자 지망생

0개의 댓글