sort

sort

Sort

한 번에 2가지 sort

팀 정보를 직급과 직급이 같은 경우 가나다 또는 알파벳 순서로 정렬시키고 싶었다. 정렬 알고리즘은 찾아보면 많이 나온다. 나의 경우에는 직급이 같은 경우 한글 정렬이 안되서 조금 시간을 버렸다.
이름을 toLowerCase() 해서 정렬하면 되는 것!
해결 방법 코드는 아래와 같다.
await Promise.all([this.sortTeamAndName(result)]) // call

static async sortTeamAndName(teams) {  
  await teams.sort(function(a, b) {  
    if (a.teamOrder === b.teamOrder) {  
      const x = a.name.toLowerCase()  // here!
      const y = b.name.toLowerCase()  // here!
       
      return x < y ? -1 : x > y ? 1 : 0  
    }
 
  return a.teamOrder - b.teamOrder  
  })  
}

object into array안의 string -> number 내림차순 정렬

let timeline = [
  {
    color: '#fff',
    contents: [
   '10. 10월',
   '11. 11월',
   '08. 8월'
    ],
    year: '2019'
  }
]
timeline안의 contents의 앞의 2자리를 비교하여 역으로 정렬하는 것이다. (11, 10, 08순)
result값을 for문을 돌면서 정렬한다.
result.forEach(content => {  
  this.sortMonth(content)  
})

static async sortMonth(timeline) {  
  await timeline.contents.sort(function(a, b) {  
    const x = Number(a.substring(0, 2))  
    const y = Number(b.substring(0, 2))

    return y - x  
  })  
}

댓글

가장 많이 본 글