JavaScript 정렬 다차원 배열
정렬은 항목을 오름차순 또는 내림차순으로 정렬하는 방법입니다. 요소 정렬은 다른 항목 또는 요소와 비교하여 수행됩니다.
JavaScript에서 단일 차원 배열 정렬
이를 증명하기 위해 정렬을 수행하기 위해 [2,78,4,10,3,59,6]
과 같은 1차원 배열을 고려하십시오.
암호:
// single-dimensional array
const array = [2, 78, 4, 10, 3, 59, 6];
// sorting in increasing order
const in_array = array.sort((a, b) => {
return a - b;
})
console.log(in_array);
// sorting in decreasing order
const de_array = array.sort((a, b) => {
return b - a;
})
console.log(de_array);
정렬 후 예상 출력은 다음과 같습니다.
여기서 요소는 오름차순으로 정렬됩니다. 즉, 요소가 오름차순으로 정렬됩니다. 배열의 요소도 내림차순으로 정렬됩니다. 즉, 요소가 내림차순으로 정렬됩니다.
이 정렬을 수행하기 위해 JavaScript에서 화살표 기능을 사용할 것입니다.
참고: Arrow 함수는 자바스크립트 ES6 버전에서 도입된 함수 중 하나입니다. 일반 함수에 비해 더 깔끔하게 함수를 생성할 수 있습니다.
예를 들어 이것이 원래 함수인 경우:
let testFunction = function(a, b) {
return a * b;
}
이 함수는 화살표 함수를 사용하여 다음과 같이 더 간단한 형식으로 작성할 수 있습니다.
let testFunction = (a, b) => a * b;
JavaScript에서 다차원 배열 또는 N-D 배열 정렬
다차원 배열은 JavaScript의 배열 sort()
메서드를 사용하여 정렬할 수 있습니다. 여기서 다차원 배열은 열 인덱스 번호를 기준으로 정렬됩니다.
다차원 배열을 [[0,1,2,0,0], [3,0,0,2,0], [2,0,0,4,6], [0,3,4,0,5], [0,0,3,5,0]]
.
암호:
// multidimensional array
const multidimensional_array = [
[0, 1, 2, 0, 0], [3, 0, 0, 2, 0], [2, 0, 0, 4, 6], [0, 3, 4, 0, 5],
[0, 0, 3, 5, 0]
];
// sorting multidimensional array
multidimensional_array.sort((a, b) => {
// performing sorting based on 2nd, and 3rd columns of the matrix
return a[2] - b[2];
})
console.log(multidimensional_array);
정렬 후 받은 출력은 다음과 같습니다.
필요에 따라 다차원 배열을 정렬하기 위해 다른 방법이나 기술을 적용할 수 있습니다.
다음과 같은 배열 배열이 있다고 가정해 보겠습니다.
const array = [['M', 'B', 'M', 'Z', 'B', 'B'], ['B', 'M', 'M', 'B', 'B', 'Z']];
이 유형의 배열 하나를 허용하는 JavaScript 함수를 만들어야 합니다. 함수는 제공된 각 배열의 하위 배열을 내부적으로 정렬하기 위해 아래 규칙을 사용해야 합니다.
- 요소가
M
도B
도 아닌 경우 해당 위치에 있어야 합니다. - 요소가
M
또는B
인 경우 알파벳순으로 정렬해야 합니다.
결과적으로 위 배열의 최종 출력은 다음과 같이 나타나야 합니다.
const output = [['M', 'M', 'M', 'Z', 'M', 'B'], ['B', 'B', 'B', 'B', 'B', 'Z']];
하위 배열의 요소는 정렬 알고리즘에 필요한 경우 해당 배열을 변경할 수 있습니다.
암호:
const array = [['M', 'B', 'M', 'Z', 'B', 'B'], ['B', 'M', 'M', 'B', 'B', 'Z']];
const custom_sort = (array = []) => {
const order = [].concat(...array.slice()),
result = []; order.forEach((element, index) => {
if (element === 'M') {
const bIndex = order.indexOf('B');
if (bIndex < index){
order[bIndex] = 'M'; order[index] = 'B';
};
};
})
array.forEach(element => result.push(order.splice(0, element.length)))
return result;
}
console.log(custom_sort(array));
콘솔에 다음 출력이 표시됩니다.
다음은 열을 지정하여 다차원 배열을 정렬할 수 있는 또 다른 접근 방식입니다.
[[21, 'MM'], [76, 'AA'], [90, 'SS'],[03, 'GG']]
와 같은 배열을 사용하여 살펴보겠습니다.
암호:
var array = [[21, 'MM'], [76, 'AA'], [90, 'SS'], [03, 'GG']];
array.sort(sort_function);
function sort_function(a, b) {
if (a[0] === b[0]) {
return 0;
} else {
return (a[0] < b[0]) ? -1 : 1;
}
}
console.log(array);
위 코드의 출력은 다음과 같습니다.
여기서는 2D 배열의 첫 번째 열에 있는 요소를 비교하여 정렬했습니다.
필요한 경우 아래 예제와 같이 배열의 두 번째 열에 있는 요소를 비교하여 다차원 배열을 정렬할 수 있습니다.
암호:
var array = [[21, 'MM'], [76, 'AA'], [90, 'SS'], [03, 'GG']];
array.sort(sortFunction_col02);
function sortFunction_col02(a, b) {
if (a[1] === b[1]) {
return 0;
} else {
return (a[1] < b[1]) ? -1 : 1;
}
}
console.log(array);
예상 출력:
결론
다차원 배열을 정렬하면 필요에 따라 열별로 오름차순 또는 내림차순으로 비교하여 배열의 요소를 쉽게 정렬하고 정렬할 수 있습니다. sort()
메서드는 현재 배열을 사용합니다. 따라서 배열이 변경됩니다.
초기 배열은 일반적으로 새 배열을 반환하는 다른 배열 메서드의 영향을 받지 않습니다. 함수형 프로그래밍을 활용하고 함수에 부작용이 없을 것으로 예상하는 경우 이를 기억하는 것이 중요합니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.