const array = ["원영", "원영", "은비", "은비", "은비", "은비", "채연", "채연"];
let result = {};
let winner = "";
for(let index in array){
let val = array[index];
result[val] = result[val] === undefined ? 1 : result[val] = result[val] +1;
}
console.log(result);
winner = Object.keys(result).reduce(function(a, b){
return result[a] > result[b] ? a : b;
})
console.log(`${winner}(이)가 총 ${result[winner]}표로 반장이 되었습니다.`)
출력 값 : 은비가 4표로 반장이 되었습니다.
원영, 은비, 채연이 몇표로 반장이 되었느냐,
배열 값을 객체 담아내서 for(in) index를 하나씩 반복하여 값을 val에 담아낸다.
val에 담아낸 값은 삼항연산자로 트루면 1 아니면 result[val] 값에 1을 더 해 총 2표 이런식으로 반복된다.
그 다음에 출력 값 :
{원영: 2, 은비: 4, 채연: 2}
원영: 2
은비: 4
채연: 2
객체에 key 와 value 로 반환 된 값을
Objeck 에서 .key라는 메서드로 result(위의 출력값)을 반환받아 reduce 메서드를 함수로 a, b를 다시 삼항연산자로 ex) a (원영) 이 > b (은비) 보다 크면 a 아니면 b 를 반환시킨다.
결국 계속 비교하다가 objeck 값에는 은비가 반환되게 된다.