xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

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 发布文章使用:只允许注册用户才可以访问!


posted @ 2020-08-28 11:45  xgqfrms  阅读(211)  评论(1编辑  收藏  举报