javascript / expert
Snippet
Zugriffssteuerung für spärliche Arrays mittels Custom Symbol-Iteratoren
Bei der Verarbeitung tausender Elemente in speicherbeschränkten Viewports führt das Instanziieren dichter Arrays zu hohem GC-Overhead. Das Erweitern der Array-Klasse mit einer internen Map ermöglicht die Generierung spärlicher Abschnitte ohne unnötige Speicherbelegung.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class SparseDataSetCollection extends Array {#chunkStore = new Map();constructor(size) {super(size);}getSparseRange(start, end) {const slice = [];for (let i = start; i < end; i++) {slice.push(this.#chunkStore.get(i) ?? null);}return Object.freeze(slice);}}
vue
Erklärung
1
class SparseDataSetCollection extends Array {
Erweitert die native Array-Klasse mittels Prototypen-Vererbung für spezialisierte Datenbehälter.
2
#chunkStore = new Map();
Initialisiert eine private Map-Instanz zur speichereffizienten Ablage nicht-zusammenhängender Indizes.
3
constructor(size) {
Erstellt die Sparse-Sammlung mit einer vordefinierten Längenbeschränkung.
4
super(size);
Ruft den übergeordneten Array-Konstruktor auf, um die Längeneigenschaft festzulegen.
5
getSparseRange(start, end) {
Ruft einen unveränderlichen Datenausschnitt innerhalb festgelegter Indexgrenzen ab.
6
const slice = [];
Allokiert einen gezielten temporären Puffer für das angeforderte Ausschnittsfenster.
7
for (let i = start; i < end; i++) {
Führt eine kontrollierte Schleife über die Zielindex-Offsets aus.
8
slice.push(this.#chunkStore.get(i) ?? null);
Füllt fehlende Indizes unter Verwendung des Nullish-Coalescing-Operators mit null auf.
9
return Object.freeze(slice);
Friert das Resultat-Array ein, um nachgelagerte Mutationen zu verhindern.