sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따른다.

 

  • sort()

sort()만 사용할 경우 유니코드 순서에 따라서 오름차순으로 정렬되기 때문에 아래와 같은 결과가 출력된다.

const str = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']
const num = [10, 7, 1280, 720, 456, 123]

str.sort() // [ 'Banana', 'Cat', 'apple', 'car', 'dog', 'eye' ]
num.sort() // [ 10, 123, 1280, 456, 7, 720 ]

 

  • sort() 숫자 오름차순
const num = [10, 7, 1280, 720, 456, 123]

num.sort((a, b) => a - b) // [ 7, 10, 123, 456, 720, 1280 ]

 

  • sort() 숫자 내림차순
const num = [10, 7, 1280, 720, 456, 123]

num.sort((a, b) => b - a) // [ 1280, 720, 456, 123, 10, 7 ]

 

  • sort() 문자열 오름차순

영어 대문자, 소문자가 섞여있을 경우, 대문자가 소문자보다 앞에 오도록 정렬된다.

숫자 > 영어 대문자 > 영어 소문자 > 한글

const str1 = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']
const str2 = ['강아지', '고양이', '사과', '자동차', '바나나', '눈']
const str3 = ['dog', '고양이', '사과', '자동차', 'Banana', '눈', '100종원']

str1.sort((a, b) => a > b ? 1 : -1) // [ 'Banana', 'Cat', 'apple', 'car', 'dog', 'eye' ]
str2.sort((a, b) => a > b ? 1 : -1) // [ '강아지', '고양이', '눈', '바나나', '사과', '자동차' ]
str3.sort((a, b) => a > b ? 1 : -1) // ['100종원', 'Banana', 'dog', '고양이', '눈', '사과', '자동차']

 

  • sort() 문자열 내림차순

영어 대문자, 소문자가 섞여있을 경우, 대문자가 소문자보다 뒤에 오도록 정렬된다.

한글 > 영어 소문자 > 영어 대문자 > 숫자

const str1 = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']
const str2 = ['강아지', '고양이', '사과', '자동차', '바나나', '눈']
const str3 = ['dog', '고양이', '사과', '자동차', 'Banana', '눈', '100종원']

str1.sort((a, b) => a > b ? -1 : 1) // [ 'eye', 'dog', 'car', 'apple', 'Cat', 'Banana' ]
str2.sort((a, b) => a > b ? -1 : 1) // [ '자동차', '사과', '바나나', '눈', '고양이', '강아지' ]
str3.sort((a, b) => a > b ? -1 : 1) // ['자동차', '사과', '눈', '고양이', 'dog', 'Banana', '100종원']

 

  • sort() 대소문자 구분없이 오름차순

대소문자 구분 없이 정렬해주는 함수는 없기 때문에 toLowerCawe() 또는 toUpperCase() 메서드를 사용해서 소문자 또는 대문자로 변경한 후 비교해 정렬한다.

const str = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']

str1.sort((a, b) => {
    const upperCaseA = a.toUpperCase()
    const upperCaseB = b.toUpperCase()

    if(upperCaseA > upperCaseB) return 1
    if(upperCaseA < upperCaseB) return -1
    if(upperCaseA === upperCaseB) return 0
})

// [ 'apple', 'Banana', 'car', 'Cat', 'dog', 'eye' ]

 

  • sort() 대소문자 구분없이 내림차순
const str = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']

str.sort((a, b) => {
    const upperCaseA = a.toUpperCase()
    const upperCaseB = b.toUpperCase()

    if(upperCaseA > upperCaseB) return -1
    if(upperCaseA < upperCaseB) return 1
    if(upperCaseA === upperCaseB) return 0
})

// [ 'eye', 'dog', 'Cat', 'car', 'Banana', 'apple' ]

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

 

제한조건

  • n은 1이상 8000000000 이하인 자연수입니다.

 

function solution(n) {
    return Number([...String(n)].sort((a, b) => b - a).join(''))
}

https://school.programmers.co.kr/learn/courses/30/lessons/120847

 

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 0 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers의 길이 ≤ 100

 

function solution(numbers) {
    let sort = numbers.sort((a, b) => b - a)
    
    return sort[0] * sort[1]
}

+ Recent posts