오늘 JavaScript 중간 시험을 봤다..
이번주에 계속 westagram을 만들면서 html과 css만 해와서 JavaScript가 기억이 안 나서 걱정되었는데 그래도 무사히 시험을 마치고 실수했던 부분을 회고하려고 한다.
getFind 함수를 작성하세요.
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다.
만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다.
만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.
const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2
function getFind(filter, sentence) {
// 아래 코드를 작성해주세요.
const sentenceArray = sentence.split("");
const resultArray = [];
for (let i = 0; i < sentence.length; i++) {
if (filter != sentenceArray[i]) {
return -1
}
if (filter = sentenceArray[i]) {
const result = resultArray.push(i)
return Math.min.apply(null, result)
}
}
}
// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = {getFind}
function getFind(filter, sentence) {
// 아래 코드를 작성해주세요.
const sentenceArray = sentence.split("");
for (let i = 0; i < sentence.length; i++) {
if (filter === sentenceArray[i]) {
return i
}
}
return -1
}
// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = {getFind}
split
을 활용하여 띄어쓰기를 포함한 모든 문자를 배열로 받아서 sentenceArray
에 선언했고,
for
문을 돌려 만약 filter(해당되는 문자)가 배열 내 같은 문자가 발견됐을 때 해당되는 index를 반환하고, 배열 끝까지 가서도 같은 게 없으면 -1이 반환될 수 있도록 return -1
을 for문 밖에 위치시켰다.
(해결하면서 로직은 맞는데 계속 안 되었던 거를 찾아보니 if문에 조건에서 ===
이 아닌 =
으로 값으로 지정을 해놨더라.. 조심하자..^^)
search
활용 (sentence 내에서 filter와 부합되는 제일 첫번째 인덱스 반환하고, search는 자동으로 부합되는 게 없으면 -1을 반환한다.)
function getFind(filter, sentence) {
// 아래 코드를 작성해주세요.
return sentence.search(filter)
}