머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
- 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
- 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
제한사항
function solution(id_pw, db) {
let result = 'fail';
db.forEach((member) => {
if(id_pw[0] === member[0]) {
if (id_pw[1] === member[1]) result = 'login'
else result = 'wrong pw'
}
});
return result;
}
result
변수를 선언 후 'fail'로 초기화해준다.
db를 forEach 메서드로 순회한다.
function solution(id_pw, db) {
const [id, pw] = id_pw;
const map = new Map(db);
return map.has(id) ? (map.get(id) === pw ? 'login' : 'wrong pw') : 'fail';
}
id_pw 배열을 구조 분해 할당 하여 id와 pw 변수에 각각 아이디와 비밀번호를 할당한다.
Map() 객체를 생성한다. 사용자 아이디를 키로, 비밀번호를 값으로 지정한다.
map.has(id)
로 map 객체에 id가 존재하는지 확인한다.
map.get(id) === pw
: 아이디에 해당하는 비밀번호가 입력된 비밀번호(pw
)와 일치하는지 확인해서 일치하면 login, 아니면 wrong pw를 반환한다.function solution(id_pw, db) {
db = db.filter(v=>v[0]===id_pw[0]);
if (!db.length) return 'fail';
for (let d of db) if (d[1] === id_pw[1]) return 'login';
return 'wrong pw';
}