TypedArray & ArrayBuffer All In One
TypedArray & ArrayBuffer All In One
TypedArray
bytes size
Table
Type | Each element size in bytes |
---|---|
Int8Array | 1 |
Uint8Array | 1 |
Uint8ClampedArray | 1 |
Int16Array | 2 |
Uint16Array | 2 |
Int32Array | 4 |
Uint32Array | 4 |
Float32Array | 4 |
Float64Array | 8 |
1 字节(1 bytes) === 8位
8位 占用 1 字节(1 bytes)
16位 占用 2 字节(2 bytes)
32位 占用 4 字节(4 bytes)
64位 占用 8 字节(8 bytes)
TypedArray
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
/*
Type Each element size in bytes
Int8Array 1
Uint8Array 1
Uint8ClampedArray 1
Int16Array 2
Uint16Array 2
Int32Array 4
Uint32Array 4
Float32Array 4
Float64Array 8
*/
// 1 字节(1 bytes) === 8位
// 8位 占用 1 字节(1 bytes)
// 16位 占用 2 字节(2 bytes)
// 32位 占用 4 字节(4 bytes)
// 64位 占用 8 字节(8 bytes)
// create a TypedArray with a size in bytes
const typedArray1 = new Int8Array(8);
typedArray1[0] = 32;
const typedArray2 = new Int8Array(typedArray1);
typedArray2[1] = 42;
console.log(typedArray1);
// [32, 0, 0, 0, 0, 0, 0, 0]
console.log(typedArray2);
// [32, 42, 0, 0, 0, 0, 0, 0]
ArrayBuffer
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
const buffer = new ArrayBuffer(8);
// ⚠️ buffer 不可以直接读取, 必须创建对应的 view
const view = new Int32Array(buffer);
demos
TypedArray bugs
// ❌ 先 map, 后解构赋值,出现了超出 TypedArray 大小限制 bug
const arr = [...new Uint8Array(300).map((item, i) => i));
arr[255];
//255
arr[256];
// 0 ❌
// ✅ 先解构赋值, 后 map,避免出现潜在的 bug
const arr = [...new Uint8Array(300)].map((item, i) => i);
arr[255];
//255
arr[256];
// 256 ✅
https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/typed-arrays
MarkDown Table
| Type | Each element size in bytes |
|---|---|
| Int8Array | 1 |
| Uint8Array | 1 |
| Uint8ClampedArray | 1 |
| | |
| Int16Array | 2 |
| Uint16Array | 2 |
| | |
| Int32Array | 4 |
| Uint32Array | 4 |
| | |
| Float32Array | 4 |
| Float64Array | 8 |
https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#tables
https://www.tablesgenerator.com/markdown_tables
refs
©xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/13576577.html
未经授权禁止转载,违者必究!