한 줄에 끝내주마
function solution(array) {
return [Math.max(...array), array.indexOf(Math.max(...array))];
}
위 메서드는 호출한 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를 출력합니다.
위 메서드는 주어진 값과 일치하는 부분을 문자열/배열로부터 역순으로 탐색하여 최초로 마주치는 인덱스를 반환. 없으면 -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