0 Tage Serie
javascript / intermediate
Snippet

Sortieren reaktiver Arrays mit sprachspezifischen Kollatoren

Die herkömmliche Array-Sortierung verarbeitet akzentuierte oder sprachspezifische Sonderzeichen (wie deutsche Umlaute) oft fehlerhaft. Die Verwendung des unveränderlichen `Array.prototype.toSorted()` innerhalb einer Computed Property zusammen mit `Intl.Collator` bewahrt den Originalzustand des Arrays und garantiert eine deterministische, lokalisierte Sortierung ohne Mutation.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { ref, computed } from 'vue';
const products = ref([
{ id: 1, name: 'Äpfel', price: 2.5 },
{ id: 2, name: 'Zitronen', price: 3.0 },
{ id: 3, name: 'Bananen', price: 1.8 }
]);
const collator = new Intl.Collator('de', { sensitivity: 'base' });
const sortedProducts = computed(() => {
return products.value.toSorted((a, b) => {
return collator.compare(a.name, b.name);
});
});
vue
Erklärung
1
const collator = new Intl.Collator('de', { sensitivity: 'base' });
Konfiguriert ein wiederverwendbares, performantes Internationalisierungs-Kollatorobjekt für deutsche Sprachregeln.
2
return products.value.toSorted((a, b) => {
Erzeugt eine neue flache Kopie des sortierten Arrays, ohne das reaktive Quell-Ref direkt zu mutieren.
3
return collator.compare(a.name, b.name);
Wendet den lokalisierten Zeichenkettenvergleich zwischen zwei Produktnamen an.