javascript / expert
Snippet
Hochdichte Array-Puffer-Bitmasken-Indexierung für virtualisierten React-Grid-Zustand
Nutzt untergeordnete TypedArrays und bitweise Array-Manipulation, um große Boolesche Auswahlzustände für virtualisierte React-Datentabellen mit minimalem Speicheraufwand im Vergleich zu Standard-Arrays oder -Sets darzustellen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class GridBitmaskStore {constructor(totalRows) {this.buffer = new Uint8Array(Math.ceil(totalRows / 8));}setBit(index, value) {const byteIndex = index >> 3;const bitPosition = index & 7;if (value) {this.buffer[byteIndex] |= (1 << bitPosition);} else {this.buffer[byteIndex] &= ~(1 << bitPosition);}}getBit(index) {return (this.buffer[index >> 3] & (1 << (index & 7))) !== 0;}}
react
Erklärung
1
this.buffer = new Uint8Array(Math.ceil(totalRows / 8));
Allokiert einen kompakten Uint8Array-Byte-Puffer, bei dem jedes Byte 8 individuelle Boolesche Zeilenzustände speichert.
2
const byteIndex = index >> 3;
Verwendet bitweisen Rechts-Shift zur schnellen Division des Index durch 8 zur Ermittlung des Byte-Ortes.
3
this.buffer[byteIndex] |= (1 << bitPosition);
Wendet bitweises ODER mit einer linksverschobenen Bitmaske an, um ein spezifisches Bit-Flag auf 1 zu setzen.
4
return (this.buffer[index >> 3] & (1 << (index & 7))) !== 0;
Wendet bitweises UND mit der Modulo-7-Bitmaskenposition an, um den einzelnen Bit-Zustand zu isolieren und auszuwerten.