나는 그 동안 조건이 2개라면 무조건 if else문을 사용해야 하는 줄
알았다. 하지만 이건 나의 크나큰 착각이었다.
getFind 함수를 작성하세요.
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.
function getFind(filter, sentence) {
// 아래 코드를 작성해주세요.
for(i = 0; i < sentence.length; i++) {
if(sentence[i] === filter){
return i; //
}
}
return -1;
}
const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2
for문을 활용해 문제를 풀어나갔다.
하지만 한 부분에서 계속 오류가 발생했는데
for(i = 0; i < sentence.length; i++) {
if(sentence[i] === filter){
return i; //
}else if(sentence[i] !== filter) {
return -1;
}
}
이 부분이었다.
if문이 아니라면 무조건 else if 나 else를 사용해 다음 리턴값을
뽑아내야 하는 줄 알고있었던 나에겐 당황스러움이 몰려왔다.
시험이 종료되고 나서, 주변 동료들에게 피드백을 구하고 나서야
왜 나의 코드가 작동하지 않았는지 알게되었다.
for문 안에서 if else문을 적용했을 시
sentence[i]와 filter가 같지 않다면 바로 -1을 리턴해버린다.
문장을 끝까지 수색하고 나서 -1을 리턴해야 하는데 말이다.
for문 안에 sentence[i] === filter 라는 조건을 넣고
모든 문장을 수색한 뒤, 결과값이 나오지 않았다면
최종적으로 함수에서 -1을 리턴해주면 문제가 해결되는 거였다.
동료에게 피드백 받는 것을 부끄러워 하지도
무서워 하지도 말자는 것이다.
아마 동료들에게 이번 문제에 대해 물어보지 않고
혼자 끙끙대며 문제를 해결하려 했다면
얼마나 시간이 걸렸을 지 모르는 일이다.
안 되는 건 안된다고 말하고, 모르는 건 모른다고 말하고
할 수 있는 건 할 수 있다고 말하자.