JavaScript 정렬 다차원 배열

  1. JavaScript에서 단일 차원 배열 정렬
  2. JavaScript에서 다차원 배열 또는 N-D 배열 정렬
  3. 결론
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 정렬 배열 - 출력

여기서 요소는 오름차순으로 정렬됩니다. 즉, 요소가 오름차순으로 정렬됩니다. 배열의 요소도 내림차순으로 정렬됩니다. 즉, 요소가 내림차순으로 정렬됩니다.

이 정렬을 수행하기 위해 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);

정렬 후 받은 출력은 다음과 같습니다.

JavaScript 정렬 다차원 배열 - 출력 1

필요에 따라 다차원 배열을 정렬하기 위해 다른 방법이나 기술을 적용할 수 있습니다.

다음과 같은 배열 배열이 있다고 가정해 보겠습니다.

const array = [['M', 'B', 'M', 'Z', 'B', 'B'], ['B', 'M', 'M', 'B', 'B', 'Z']];

이 유형의 배열 하나를 허용하는 JavaScript 함수를 만들어야 합니다. 함수는 제공된 각 배열의 하위 배열을 내부적으로 정렬하기 위해 아래 규칙을 사용해야 합니다.

  • 요소가 MB도 아닌 경우 해당 위치에 있어야 합니다.
  • 요소가 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));

콘솔에 다음 출력이 표시됩니다.

JavaScript 정렬 다차원 배열 - 출력 2

다음은 열을 지정하여 다차원 배열을 정렬할 수 있는 또 다른 접근 방식입니다.

[[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);

위 코드의 출력은 다음과 같습니다.

JavaScript 정렬 다차원 배열 - 출력 3

여기서는 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);

예상 출력:

JavaScript 정렬 다차원 배열 - 출력 4

결론

다차원 배열을 정렬하면 필요에 따라 열별로 오름차순 또는 내림차순으로 비교하여 배열의 요소를 쉽게 정렬하고 정렬할 수 있습니다. sort() 메서드는 현재 배열을 사용합니다. 따라서 배열이 변경됩니다.

초기 배열은 일반적으로 새 배열을 반환하는 다른 배열 메서드의 영향을 받지 않습니다. 함수형 프로그래밍을 활용하고 함수에 부작용이 없을 것으로 예상하는 경우 이를 기억하는 것이 중요합니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

관련 문장 - JavaScript Sort