reduce 사용하여 최빈값 구하기
사용한 메서드
.hasOwnProperty();
//객체가 특정 프로퍼티를 가지고 있는지를 boolean 값으로 반환
.Object.keys();
//순회하며 객체의 전체 키값을 받아온다.
작성한 코드
//array의 배열을 reduce로 순회한다.
//누적값에 현잿값이 있는지 확인한다.
//누적값에 현잿값이 있다면 누적값의 현잿값에 +1을 하고 누적값에 재할당
//해당값이 없다면 누적값은 1이 된다.
//초깃값을 {}로 설정하고 그곳에 담아준다.
//{}에 담긴 값을 다시 한번 reduce로 순회한다.
//삼항 연산자를 사용해 newObject[누적값]과 newObject[현잿값]을 비교한다
//newObject[누적값]이 newObject[현잿값] 보다 크거나 같다면
//newObject[누적값] === newObject[현잿값]이라면 -1을 리턴
//같지 않다면 acc를 리턴
//newObject[누적값]이 newObject[현잿값] 보다 작다면 현잿값을 리턴
//객체에 담긴 값이 리턴되므로 Number()를 통해 숫자로 바꿔준다.
function solution(array){
var newObject = array.reduce((acc, cur) => {
acc.hasOwnProperty(cur) ? (acc[cur] +=1 : acc[cur] = 1);
return acc;
}, {})
var modeKey = Object.keys(newObject).reduce((acc, cur) =>
newObject[acc] >= newObject[cur] ?
(newObject[acc] === newObject[cur] ? -1 : acc) : cur);
return Number(modeKey);