뚝딱햄 탈출기

[JavaScript] sort(), ASCII(아스키) 코드 : 배열 객체 정렬 오름차순 내림차순, 문자열 정렬, 문자 비교 본문

Programming language/JavaScript

[JavaScript] sort(), ASCII(아스키) 코드 : 배열 객체 정렬 오름차순 내림차순, 문자열 정렬, 문자 비교

hyrmzz1 2023. 8. 8. 13:13

sort()

JS 배열 객체에 내장된 메서드.

배열의 요소를 적절한 위치에 정렬.

배열의 요소를 문자열로 변환 후, 문자열의 유니코드 포인트 순서에 따라 정렬. 그렇기에 숫자를 정렬하려고 해도, 문자처럼 정렬됨을 확인할 수 있음.

const arr = [40, 100, 1, 5, 25, 10];
arr.sort();
console.log(arr); // [1, 10, 100, 25, 40, 5]

 

따라서 비교 함수를 함께 사용해야 함.

sort() 메서드의 비교 함수는 두 개의 인자를 받아, 리턴 값에 따라 정렬 순서를 결정하는 값을 반환함.

비교 함수가 양수를 반환하면 인자 두 개의 위치를 바꾸고, 음수나 0을 반환하면 위치를 그대로 유지함.

function compare(a, b) {
  // ...
}

문자열 정렬

// 오름차순 정렬
const arr1 = ['ddd', 'ds', 'de', 'da', 'de'];
arr1.sort();
console.log(arr1);	// [ 'da', 'ddd', 'de', 'de', 'ds' ]
// 내림차순 정렬 1
const arr1 = ['ddd', 'ds', 'de', 'da', 'de'];
arr1.sort().reverse();
console.log(arr1);	// ['ds', 'ddd', 'de', 'de', 'da']

// 내림차순 정렬 2
const arr2 = ['ddd', 'ds', 'de', 'da', 'de'];
arr2.sort((a, b) => b.localeCompare(a));
console.log(arr2); // ['ds', 'ddd', 'de', 'de', 'da']

// 내림차순 정렬 3
const arr3 = ['ddd', 'ds', 'de', 'da', 'de'];
arr3.sort((a, b) => (a < b ? 1 : -1));
console.log(arr3); // ['ds', 'ddd', 'de', 'de', 'da']

숫자 정렬

// 오름차순
const arr1 = [40, 100, 1, 5, 25, 10];
arr1.sort(function(a, b) {
  return a - b;	// a - b가 양수이면 두 인자의 인덱스 값 바꾸고(= b를 a 앞으로), 0 또는 음수라면 그대로. 
});
console.log(arr1); // [1, 5, 10, 25, 40, 100]

// 화살표함수를 사용해 간략히 작성할 수 있다.
const arr2 = [40, 100, 1, 5, 25, 10];
arr2.sort((a, b) => a - b);
console.log(arr2); // [1, 5, 10, 25, 40, 100]
// 내림차순
const arr1 = [40, 100, 1, 5, 25, 10];
arr1.sort(function(a, b) {
  return b - a;
});
console.log(arr1); // [100, 40, 25, 10, 5, 1]

// 화살표함수를 사용해 간략히 작성할 수 있다.
const arr2 = [40, 100, 1, 5, 25, 10];
arr2.sort((a, b) => b - a);
console.log(arr2); // [100, 40, 25, 10, 5, 1]

객체 정렬

// 객체 배열 정렬할 수도 있다.
const student = [
  { name: "kim", age: 23 },
  { name: "lee", age: 25 },
  { name: "park", age: 20 }
];

student.sort(function(a, b) {
  return a.age - b.age;	// age property 기준으로 오름차순으로 정렬
});

// 화살표 함수를 사용한다면 ...
student.sort((a, b) => a.age - b.age);

console.log(student);
// [
//  { name: 'park', age: 20 },
//  { name: 'kim', age: 23 },
//  { name: 'lee', age: 25 }
// ]

ASCII(아스키) 코드

아스키 코드란 컴퓨터에서 문자를 숫자로 표현하는 표준 방식.

JS에서 문자끼리 비교 연산을 수행할 때, 아스키 코드 값을 통해 비교함.

ASCII 코드 문자 ASCII 코드 문자 ASCII 코드 문자
33 ! 느낌표 34 " 큰따옴표 35 # 번호 기호
36 $ 달러 기호 37 % 퍼센트 부호 38 & 앰퍼샌드
39 ' 어포스트로피 40 ( 여는 괄호 41 ) 닫는 괄호
42 * 별표 43 + 더하기 기호 44 , 쉼표
45 - 하이픈 46 . 기간 47 / 슬래시
48 0 49 1 50 2
51 3 52 4 53 5
54 6 55 7 56 8
57 9 58 : 콜론 59 ; 세미콜론
60 < 보다 작음 61 = 등호 62 > 보다 큼-부호
63 ? 물음표 64 @ (사인) 65 A 대문자 a
66 B 대문자 b 67 C 대문자 c 68 D 대문자 d
69 E 대문자 e 70 F 대문자 f 71 G 대문자 g
72 H 대문자 h 73 I 대문자 i 74 J 대문자 j
75 K 대문자 k 76 L 대문자 l 77 M 대문자 m
78 N 대문자 n 79 O 대문자 o 80 P 대문자 p
81 Q 대문자 q 82 R 대문자 r 83 S 대문자 s
84 T 대문자 t 85 U 대문자 u 86 V 대문자 v
87 W 대문자 w 88 X 대문자 x 89 Y 대문자 y
90 Z 대문자 z 91 [ 여는 대괄호 92 \ 백슬래시
93 ] 닫는 대괄호 94 ^ 캐럿 95 _ 밑줄
96 ` 억음 부호 97 a 소문자 a 98 b 소문자 b
99 c 소문자 c 100 d 소문자 d 101 e 소문자 e
102 f 소문자 f 103 g 소문자 g 104 h 소문자 h
105 i 소문자 i 106 j 소문자 j 107 k 소문자 k
108 l 소문자 l 109 m 소문자 m 110 n 소문자 n
111 o 소문자 o 112 p 소문자 p 113 q 소문자 q
114 r 소문자 r 115 s 소문자 s 116 t 소문자 t
117 u 소문자 u 118 v 소문자 v 119 w 소문자 w
120 x 소문자 x 121 y 소문자 y 122 z 소문자 z
123 { 여는 중괄호 124 | 세로 막대 125 } 닫는 중괄호
126 ~ 틸드        
const result = 'A' > 'B';
console.log(result);	// false

 

Comments