아래와 같은 배열을 순서대로 정렬하고 싶다면
const arr = [3,8,2,4,5,1]
arr.sort()
// [1,2,3,4,5,8]
하지만 👇 아래와 같은 상황에는 정렬이 되지 않는다.
const arr = [1,10,13,2,5,43,55]
arr.sort()
// [1,10,13,2,43,5,55]
위 내용처럼 앞글자만 순서로 정렬되기 때문에 이렇게 바꿔준다.
const arr = [1,10,13,2,5,43,55]
arr.sort(function(a,b){
if(a > b) return 1
else if(a === b ) return 0
else return -1
})
// 오름차순
/// [ 1, 2, 5, 10, 13, 43, 55 ]
const arr = [1,10,13,2,5,43,55]
arr.sort(function(a,b){
if(a < b) return 1 // 여기만 바꿔주자
else if(a === b ) return 0
else return -1
})
문자열도 위와 같이 정렬하면 된다.
const arr = ["Roy","Daisy","Chris","Wendy","Adam","Ava"]
arr.sort()
// [ 'Adam', 'Ava', 'Chris', 'Daisy', 'Roy', 'Wendy' ]
or
* 오름차순
arr.sort(function(a,b){
if(a > b) return 1
else if(a === b ) return 0
else return -1
})
// [ 'Adam', 'Ava', 'Chris', 'Daisy', 'Roy', 'Wendy' ]
* 내림차순
arr.sort(function(a,b){
if(a < b) return 1
else if(a === b ) return 0
else return -1
})
//[ 'Wendy', 'Roy', 'Daisy', 'Chris', 'Ava', 'Adam' ]
아래와 같은 객체를 rank 순으로 정렬하고 싶다면
const arr = [
{rank: 1 , food:"paprica"},
{rank: 3 , food:"chicken"},
{rank: 5, food:"sushi"},
{rank: 4 , food:"soup"},
{rank: 2 , food:"pasta"},
{rank: 6 , food:"pizza"},
]
// rank 오름차순
arr.sort(function(a,b){
if (a.rank > b.rank) // rank 를 기준으로 정렬
return 1
else if (a.rank === b.rank)
return 0
if (a.rank < b.rank)
return -1
})
/*
[
{ rank: 1, food: 'paprica' },
{ rank: 2, food: 'pasta' },
{ rank: 3, food: 'chicken' },
{ rank: 4, food: 'soup' },
{ rank: 5, food: 'sushi' },
{ rank: 6, food: 'pizza' }
]
*/
// rank 내림차순
arr.sort(function(a,b){
if (a.rank > b.rank) // rank 를 기준으로 정렬
return -1
else if (a.rank === b.rank)
return 0
if (a.rank < b.rank)
return 1
})
/*
[
{ rank: 6, food: 'pizza' },
{ rank: 5, food: 'sushi' },
{ rank: 4, food: 'soup' },
{ rank: 3, food: 'chicken' },
{ rank: 2, food: 'pasta' },
{ rank: 1, food: 'paprica' }
]
*/