JavaScript Typed Array 类型化数组方法
from() 方法
from() 方法可以从任何可迭代对象创建一个新的类型化数组:
示例
从字符串创建类型化数组:
const myArr = Int16Array.from("1234567890");亲自试一试 »
从数组创建类型化数组:
const myArr = Int16Array.from([1,2,3,4,5,6,7,8,9,0]);亲自试一试 »of() 方法
of() 方法根据多个参数创建一个新的类型化数组:
constructor.name 属性
constructor.name 属性返回类型化数组的名称(类型):
BYTES_PER_ELEMENT 属性
BYTES_PER_ELEMENT 返回存储每个数组元素所用的字节数:
常用数组方法
类型化数组与标准数组共享许多方法:
-
迭代:forEach()、map()、filter()、reduce()、reduceRight()、every()、some()、find()、findIndex()、findLast()、findLastIndex()。
-
搜索:includes()、indexOf()、lastIndexOf()。
-
操作:at()、copyWithin()、fill()、reverse()、set()、slice()、sort()、subarray()。
-
转换:join()、toLocaleString()、toString()。
-
非修改方法:toReversed()、toSorted()、with()。
fill() 方法
fill() 方法会将类型化数组中的所有元素更改为指定值:
fill() 方法接受两个可选参数:起始索引和结束索引:
find() 方法
find() 方法返回满足条件的第一个元素:
some() 方法
some() 方法会在给定函数返回 true 的元素上返回 true:
不可用的数组方法
某些数组方法不适用于类型化数组。
这是由于类型化数组的长度固定且缺乏固定结构所致。
| 方法 | 数组 | 类型化数组 |
|---|---|---|
| pop() | Yes | NO |
| push() | Yes | NO |
| shift() | Yes | NO |
| unshift() | Yes | NO |
| splice() | Yes | NO |
| flat() | Yes | NO |
| flatMap() | Yes | NO |
| concat() | Yes | NO |
| toSpliced() | Yes | NO |
支持类型化数组的浏览器 API
Fetch API 示例
fetch(url)
.then(request => request.arrayBuffer())
.then(arrayBuffer =>...);
画布示例
const canvas = document.getElementById('my_canvas');
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
const uint8ClampedArray = imageData.data;浏览器支持
类型化数组 是 ES6 特性。
自 2017 年 6 月起,所有现代浏览器均已完全支持 ES6。
| Chrome 51 |
Edge 15 |
Firefox 54 |
Safari 10 |
Opera 38 |
| 2016年5月 | 2017年4月 | 2017年6月 | 2016年9月 | 2016年6月 |
