머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw
와 회원들의 정보가 담긴 2차원 배열 db
가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.
function solution(id_pw, db) {
var answer = '';
return answer;
}
function solution(id_pw, db) {
let result = "";
db.map((item) => {
if (item[0] === id_pw[0] && item[1] === id_pw[1]) result = "login";
else if (item[0] === id_pw[0] && item[1] !== id_pw[1]) result = "wrong pw";
else if (item[0] !== id_pw[0] && item[1] !== id_pw[1]) result = "fail";
});
return result;
}
solution(
["meosseugi", "1234"],
[
["rardss", "123"],
["yyoom", "1234"],
["meosseugi", "1234"],
]
);
for문 말고 map()을 활용해서 풀어보았다.
하지만 더 간결하게 줄여보고 싶어...!!!
function solution(id_pw, db) {
const [id, pw] = id_pw;
const map = new Map(db);
console.log(map);
console.log(map.has(id));
console.log(map.get(id));
return map.has(id) ? (map.get(id) === pw ? "login" : "wrong pw") : "fail";
}
코드를 하나씩 뜯어보자.
구조 분해 할당을 사용해서 id_pw
배열에 담긴 각각의 값에 id
, pw
라는 변수를 지정한다.
const [id, pw] = id_pw;
// 아래와 같이 변수가 지정되어 진다.
id = "meosseugi"
pw = "1234"
Map 객체를 생성해 준다.
const map = new Map(db);
console.log(map);
db
에 들어온 배열을 가지고 Map
객체를 생성해 준다.
그리고 console
에 찍어보면 아래와 같이 나오게 된다.
객체마냥 key
와 value
값으로 분해되어 진 것이 보인다.
그럼 이제 삼항 연산자를 이용해서 코드 작성해 보자.
return map.has(id) ? (map.get(id) === pw ? "login" : "wrong pw") : "fail";
id = "meosseugi"
와 동일한 key
값이 있는지 확인한다.map.get
으로 해당 key
의 value
값("1234")을 가져와서 pw = "1234"
와 비교한다.
Map 객체를 숙지하고 잘 다룰 수 있는 날이 오겠찌?