프로그래머스
ex. const hash = {headgear: 2, eyewear:3}키-값 형태로 옷종류-개수를 저장한다. function solution(clothes){
  const hash = clothes.reduce((acc,cur) => {
    acc[cur[1]] = acc[cur[1]] ? acc[cur[1]]+1 : 1;
    return acc;
  },{});
  let answer = 1;
  for(const el in hash){
    answer *= hash[el] + 1;
  }
  return answer - 1;
}
obj[el[1]] = (obj[el[1]] || 0) +1;obj[el[1]]값이 undefined이면 0, 값이 있으면 obj[el[1]]을 할당한 뒤 1을 더해준다. 이 부분은 삼항연산자로 작성한 부분과 같은 역할을 하는데, ||를 사용해서 작성한 부분이 새로웠다. function solution(clothes) {
  let answer = 1;
  const obj = {};
  for(let el of clothes){
    obj[el[1]] = (obj[el[1]] || 0) +1;
  }
  for(let key in obj){
    answer *= (obj[key]+1);
  }
  return asnwer -1;
} 
배열은 선형탐색을 해서 O(n)의 시간복잡도가 걸리는 반면 객체를 사용하면 O(1)로 원하는 키값을 검색할때 효율적이다.
완주하지 못한 선수에서도 객체를 활용해서 풀었는데, 카테고리/유형별로 개수나 값을 저장할때 활용할 수 있을 것 같다.