본문 바로가기
Coding Test/JavaScript

[Javascript] (프로그래머스 level 0) 로그인 성공?

by Chaedie 2022. 10. 20.
728x90

[Javascript] (프로그래머스 level 0) 로그인 성공?

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

function solution(id_pw, db) {
    for (let i = 0; i < db.length; i++) {
        let userInfo = db[i];
        if (userInfo[0] === id_pw[0]) {
            let loginResult = id_pw[1] === userInfo[1] ? 'login' : 'wrong pw';

            return loginResult
        }
    }

    return 'fail'
}
  • Array.forEach 또는 Array.filter()로 풀려고 했으나, 그럼 로그인 정보를 찾은 뒤에도 쓸데없이 배열 전체를 순회해야한다는 단점이 있어서 for문을 사용해서 값을 찾았습니다.
  • 하지만 다른 사람의 풀이를 보고 Array.find()라는 메서드를 알게 되었습니다.

다른 사람 풀이 참고한 풀이

function solution(id_pw, db) {
    let user = db.find(([id]) => id === id_pw[0]);

    if (user) {
        return user[1] === id_pw[1] ? 'login' : 'wrong pw';
    }

    return 'fail'
}
  • Array.find()를 사용하면 위 코드와 같이 엄청 깔끔하게 해결이 가능합니다.
    • Array.find()는 콜백 함수의 조건을 만족 하는 첫 값을 반환합니다.
    • 그래서 user는 db에서 userId가 일치하는 [userId, userPw] 로 반환됩니다.
    • 이 배열을 이용하면 로그인 정보가 일치한지 확인이 가능합니다.

배운 점, 느낀 점

  • 오늘 ! 정말! 좋은 ! 메스드를 알게 되었네요!

댓글