JavaScript Sort Multidimensional Array

Migel Hewage Nimesha 15 Februar 2024
  1. Sortieren Sie ein eindimensionales Array in JavaScript
  2. Sortieren Sie ein mehrdimensionales Array oder N-D-Array in JavaScript
  3. Abschluss
JavaScript Sort Multidimensional Array

Sortieren ist eine Methode, um Elemente in aufsteigender oder absteigender Reihenfolge zu ordnen. Das Sortieren von Elementen erfolgt durch Vergleich mit einem anderen Element oder Element.

Sortieren Sie ein eindimensionales Array in JavaScript

Um dies zu demonstrieren, betrachten wir ein eindimensionales Array als [2,78,4,10,3,59,6], um die Sortierung durchzuführen.

Code:

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

Die erwartete Ausgabe nach dem Sortieren ist wie folgt:

JavaScript-Sortierarray - Ausgabe

Hier werden die Elemente aufsteigend sortiert, das heißt die Elemente werden in aufsteigender Reihenfolge angeordnet. Die Elemente des Arrays sind ebenfalls absteigend sortiert, das heißt, die Elemente sind in absteigender Reihenfolge angeordnet.

Wir verwenden die Pfeilfunktion in JavaScript, um diese Sortierung durchzuführen.

Hinweis: Die Pfeilfunktion ist eine der Funktionen, die in der ES6-Version von JavaScript eingeführt wurden. Damit können Sie Funktionen im Vergleich zu normalen Funktionen sauberer erstellen.

Wenn dies beispielsweise die ursprüngliche Funktion ist:

let testFunction = function(a, b) {
  return a * b;
}

Diese Funktion lässt sich mit der Pfeilfunktion vereinfacht wie folgt schreiben:

let testFunction = (a, b) => a * b;

Sortieren Sie ein mehrdimensionales Array oder N-D-Array in JavaScript

Mehrdimensionale Arrays können mit der Array-Methode sort() von JavaScript sortiert werden. Hier werden mehrdimensionale Arrays basierend auf Spaltenindexnummern sortiert.

Lassen Sie uns das Sortieren demonstrieren, indem wir ein mehrdimensionales Array als [[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]].

Code:

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

Die nach dem Sortieren erhaltene Ausgabe lautet wie folgt:

JavaScript Multidimensionales Array sortieren - Ausgabe 1

Wir können je nach Bedarf verschiedene Methoden oder Techniken zum Sortieren mehrdimensionaler Arrays anwenden.

Nehmen wir an, wir haben das folgende Array von Arrays.

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

Wir müssen eine JavaScript-Funktion erstellen, die ein Array dieses Typs akzeptiert. Die Funktion sollte die folgenden Regeln verwenden, um das Unterarray jedes bereitgestellten Arrays intern zu sortieren.

  • Wenn die Elemente weder M noch B sind, sollten sie in ihrer Position bleiben.
  • Wenn das Element entweder M oder B ist, sollten sie alphabetisch sortiert werden.

Als Ergebnis sollte die endgültige Ausgabe des obigen Arrays wie folgt aussehen:

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

Es sollte beachtet werden, dass Elemente aus Subarrays ihre Arrays ändern können, wenn der Sortieralgorithmus dies erfordert.

Code:

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

Die Konsole zeigt die folgende Ausgabe:

JavaScript Multidimensionales Array sortieren - Ausgabe 2

Hier ist ein weiterer Ansatz, bei dem Sie mehrdimensionale Arrays sortieren können, indem Sie eine Spalte angeben.

Sehen wir uns das an, indem wir ein Array wie [[21, 'MM'], [76, 'AA'], [90, 'SS'],[03, 'GG']] verwenden.

Code:

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

Die Ausgabe des obigen Codes ist wie folgt:

JavaScript Multidimensionales Array sortieren - Ausgabe 3

Hier wurde es sortiert, indem die Elemente in der ersten Spalte des 2D-Arrays verglichen wurden.

Bei Bedarf kann das mehrdimensionale Array sortiert werden, indem die Elemente in der zweiten Spalte des Arrays verglichen werden, wie im folgenden Beispiel.

Code:

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

Die erwartete Ausgabe:

JavaScript Multidimensionales Array sortieren - Ausgabe 4

Abschluss

Durch das Sortieren mehrdimensionaler Arrays können die Elemente eines Arrays einfach sortiert und angeordnet werden, indem sie je nach Bedarf spaltenweise in aufsteigender oder absteigender Reihenfolge verglichen werden. Beachten Sie, dass die Methode sort() das aktuelle Array verwendet; Daher wird das Array geändert.

Das anfängliche Array wird normalerweise nicht von anderen Array-Methoden beeinflusst, die ein neues Array zurückgeben. Dies ist wichtig, wenn Sie funktionale Programmierung verwenden und davon ausgehen, dass Funktionen keine Nebenwirkungen haben.

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.

Verwandter Artikel - JavaScript Sort