배열안의 객체 / 그냥 객체

KHW·2021년 6월 23일
0

알고리즘

목록 보기
29/37

배열안의 객체

[{'a' : 10, 'b' : 20} , {'a' :30 , 'b' :100}] 이러한 것들로 각각을 sort로 분류시킬 수 있다.

그냥 객체

let obj = {'a' : 10 ,'b' :300} 이러한 형태로 obj['a'] or obj['b']를 통해 접근이 가능하고 관련 모음의 전체를 사용하고자 할때 사용한다.

ex)

genresplays
["classic", "pop", "classic", "classic", "pop"][500, 600, 150, 800, 2500]

이때, 각 장르당 plays의 총합은

let dic ={}
genres.map((val,idx)=>{
  dic[val] = dic[val] ? dic[val] + plays[idx] : plays[idx]
})

dic	//	{ classic: 1450, pop: 3100 }

그리고 이를
1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다.
2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다.
3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.

분류를 위해서는

genres.map((t,i)=> ({genre : t, count:plays[i] , index:i})
      .sort((a,b)=>{               
                   if(a.genre !== b.genre) return dic[b.genre] - dic[a.genre];
                   if(a.count !== b.count) return b.count - a.count;
                   if(a.index !== b.index) return a.index - b.index;
               })

순서대로 장르가 같지않으면 장르가 많이 재생된 순서로 하고
장르가 같으면 그다음으로 재생 많이된 노래를 순서로 하고
장르가 같고 재생된 노래가 같으면 고유번호가 낮은 순서(오름차순)으로 진행한다.

정리

총합을 구하기 위해서는 하나의 {}형태로 나타내고
각각을 sort로 분리하기 위해서는 {}의 여러개인 [{..},{..},{..}] 형태로 나타내서 분리에 사용해야한다.
이때 주의 할 점은 if문으로 sort함수 안에서 조건을 지정한다.

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글