JavaScript 정렬 다차원 배열

Migel Hewage Nimesha 2024년2월15일
  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() 메서드는 현재 배열을 사용합니다. 따라서 배열이 변경됩니다.

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

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