Promise를 활용한 데이터 소팅 기능 구현
현대적인 웹 애플리케이션에서 데이터 소팅은 매우 중요한 기능입니다. 데이터를 정렬하는 것은 사용자 경험을 향상시키고 데이터의 가시성을 개선하는 데 도움이 됩니다.
이번 기사에서는 JavaScript의 Promise를 활용하여 데이터 소팅 기능을 구현하는 방법을 살펴보겠습니다.
소팅 알고리즘 선택하기
데이터를 소팅하는 가장 일반적인 알고리즘은 크게 두 가지입니다. 하나는 버블 소팅(Bubble Sort)이고, 다른 하나는 퀵 소팅(Quick Sort)입니다.
퀵 소팅은 일반적으로 더 빠르지만 구현이 복잡하며 큰 데이터셋에서 성능이 저하될 수 있습니다. 버블 소팅은 구현이 단순하지만 더 많은 실행 시간이 소요됩니다. 기본적인 데이터 소팅을 구현하려면 두 가지 알고리즘 중 하나를 선택해야 합니다.
코드 예시
이제 실제 예시 코드를 살펴보겠습니다.
버블 소팅 알고리즘
function bubbleSort(arr) {
return new Promise((resolve, reject) => {
for(let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr.length-i-1; j++) {
if(arr[j] > arr[j+1]) {
// Swap elements
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
resolve(arr); // 소팅된 배열을 resolve로 반환
});
}
퀵 소팅 알고리즘
function quickSort(arr) {
return new Promise((resolve, reject) => {
if(arr.length <= 1) {
resolve(arr);
return;
}
const pivot = arr[arr.length - 1];
const left = [];
const right = [];
for(let i = 0; i < arr.length - 1; i++) {
if(arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
resolve(Promise.all([quickSort(left), pivot, quickSort(right)]).then(values => {
const [left, pivot, right] = values;
return [...left, pivot, ...right];
}));
});
}
데이터 소팅 함수 사용하기
const data = [5, 2, 8, 3, 1, 9];
bubbleSort(data)
.then(sortedData => {
console.log("버블 소팅 결과:", sortedData);
// output: [1, 2, 3, 5, 8, 9]
})
.catch(err => {
console.error("소팅 오류 발생:", err);
});
quickSort(data)
.then(sortedData => {
console.log("퀵 소팅 결과:", sortedData);
// output: [1, 2, 3, 5, 8, 9]
})
.catch(err => {
console.error("소팅 오류 발생:", err);
});
위의 예시에서는 두 가지 소팅 함수인 bubbleSort
와 quickSort
를 정의하고, 주어진 배열을 소팅한 후 Promise를 반환합니다. Promise의 결과는 .then
메서드를 통해 처리할 수 있습니다.
결론
JavaScript의 Promise를 활용하여 데이터 소팅 기능을 구현하는 방법을 살펴보았습니다. 버블 소팅과 퀵 소팅 알고리즘을 사용하여 데이터를 소팅하는 예시 코드를 제공했습니다. 이러한 소팅 기능을 활용하면 웹 애플리케이션에서 데이터를 정렬하는 데 도움이 될 수 있습니다.
#javascript #promise #데이터소팅