JavaScript
[JS] 오름차순과 내림차순 정렬에 필요한 sort() 동작 원리? / filter 함수란?
dbfl9911
2023. 10. 28. 01:22
반응형
[ sort() 동작 원리 ]
- 오름차순 정렬
var arr = [5,3,8,2,4,1,6];
arr.sort(function(a, b){
return a - b;
});
console.log(arr); // [1,2,3,4,5,6,8]
위의 코드에서 a, b는 arr안의 값들이다.
1. return되는 값인 a - b가 양수면 a를 오른쪽으로 정렬해준다.
2. return되는 값인 a - b가 음수면 b를 오른쪽으로 정렬해준다.
3. 이런식으로 계속 arr안 값을 뽑아 a, b에 넣어줘 숫자순으로 정렬된다.
예를 들어 위의 코드에서보면 a에는 5, b에는 3이 먼저 들어온다. return되는 값인 a-b는 양수이기 때문에 a인 5를 b인 3보다 오른쪽으로 정렬시켜준다. 이런식으로 뒤의 숫자도 반복해 정렬하면 오름차순 정렬이 된다.
- 내림차순 정렬
var arr = [5,3,8,2,4,1,6];
arr.sort(function(a, b){
return b - a;
});
console.log(arr); // [8, 6, 5, 4, 3, 2, 1]
마찬가지로 return되는 값이 음수면 b를 오른쪽으로 보내야한다. 위의 코드를 보면 return되는 값이 음수이므로 b인 3을 오른쪽으로 보내야한다. b인 3을 a인 5보다 오른쪽으로 정렬시켜 내림차순 정렬이 되고 남은 값도 마찬가지 원리로 적용된다.
[ 문자 정렬 ]
간단하게 sort함수만 붙여서 하면 정렬된다.
var arr = ['다', '가', '나']
arr.sort();
console.log(arr); // [ '가', '나', '다' ]
- 문자 역순 정렬
역순정렬은 아래와 같이 sort()로 오름차순 정렬해준 뒤 reverse()를 써주면 문자 역순 정렬 끝!
var arr = ['다', '가', '나']
arr.sort().reverse();
console.log(arr); // [ '다', '나', '가' ]
[ filter 함수 ]
원하는 값만 필터링하고 싶을 때 아래처럼 filter 함수를 쓰면 된다 return값에는 조건식이 들어간다. 참고로 filter 함수는 원본을 변형시키지 않으므로 새로운 변수에 담아 써야한다. ( <-> sort함수는 원본을 변형시킨다)
var arr = [1,2,3,4,5,6,7,8]
var arr2 = arr.filter(function(a){
return a > 5
})
console.log(arr2); // [ 6, 7, 8 ]
반응형