participant.sort();
completion.sort();
for (let check = 0; check < completion.length; check++) {
if (participant[check] !== completion[check]) {
answer = participant[check];
break;
}
}
우선 두개의 배열을 소트한다. 그럼 양 쪽 다 같은 순서로 사람들의 이름이 놓이게 된다.
for
문으로 방을 하나하나 점검하면서 서로의 이름이 일치하지 않는 방이 있는지 체크한다.
서로의 이름이 일치하지 않는다면 완주하지 못한 사람이므로 return
한다.
completion.forEach((item) => {
completion[item] = completion[item] ? completion[item] +1 : 1;
});
participant.forEach((item) => {
if (completion[item]>0) {
completion[item]--;
} else {
answer = item;
}
});
{
"mislav":1,
"asdas":1,
"jun":1
}
완주자 배열의 이름을 키값으로 1의 밸류 값을 주었으니,
참여자 배열을 순회하면서 참여자 이름으로 해당 해쉬의 밸류값들을 조회한다.
만약 값이 0보다 크더라면 완주자에 있던 이름이므로 -1해준다
만약 값이 0이하라면 완주자에는 없던 이름이므로 return
해준다.
만약 값이 undefined라면 완주자에는 없던 이름이므로 return
해준다.