머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
function solution(id_pw, db) {
const regex = /^[0-9]+$/
var answer = '';
// 아이디 조회
db.forEach((x) => {
console.log("아이디확인", x[0] === id_pw[0].toLowerCase())
if(x[0] === id_pw[0].toLowerCase()) {
if(x[1] === id_pw[1] && typeof id_pw[1] === 'string' && regex.test(id_pw[1])) {
answer = "login"
}
answer = "wrong pw"
} else {
answer = "fail"
}
})
return answer;
}
일단 테스트는 다 통과했지만 제출하면 런타임 문제가 발생했다 ㄷㄷ
이중 if문에서 로그인 되었을 때와 비밀번호가 틀렸을 때 중지되어야 하는데 반복문은
계속 돌고 있는 것이 원인
function solution(id_pw, db) {
var answer = '';
// 아이디 조회
db.every((x) => {
if(x[0] === id_pw[0]) {
if(x[1] === id_pw[1]) {
answer = "login"
return false
}
answer = "wrong pw"
return false
} else {
answer = "fail"
return true
}
})
return answer;
}