📅  最后修改于: 2023-12-03 15:01:39.554000             🧑  作者: Mango
Uint8ClampedArray.from()
是 ECMAScript 2015 (ES6) 引入的新方法,用于创建一个 Uint8ClampedArray
类型数组,从一个类似数组或可迭代对象中提取值。
Uint8ClampedArray
是一个类数组对象,它包含了 8 位无符号整数(0 到 255 之间)的固定长度序列。与普通数组不同的是,Uint8ClampedArray
类型数组在视线外的地方将会被截断到有效范围内。所以,它不支持数组的一些方法,比如 splice()
等。
Uint8ClampedArray.from(source[, mapFn[, thisArg]])
source
必需。源数组或类数组对象,可以是任何可迭代对象。
mapFn
可选。类似于 Array.prototype.map()
函数的回调函数,用于将每个元素转换后放入新的数组中。
thisArg
可选。回调函数 mapFn
中的 this
对象。
一个新的 Uint8ClampedArray
类型数组。
Uint8ClampedArray
类型数组const str = "Hello world";
const u8cArr = Uint8ClampedArray.from(str, char => char.charCodeAt(0));
console.log(u8cArr); // 输出: Uint8ClampedArray(11) [72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
Uint8ClampedArray
类型数组const arr = [10, 20, 30, 40, 50];
const u8cArr = Uint8ClampedArray.from(arr);
console.log(u8cArr); // 输出: Uint8ClampedArray(5) [10, 20, 30, 40, 50]
Uint8ClampedArray
类型数组function* genFn() {
yield 100;
yield 200;
yield 300;
}
const u8cArr = Uint8ClampedArray.from(genFn());
console.log(u8cArr); // 输出: Uint8ClampedArray(3) [100, 200, 255]
Uint8ClampedArray
类型数组的长度是固定的,不能通过 length
属性进行修改。
如果 mapFn
返回值超出了 0 到 255 的范围,将会被截断为最大值或最小值。如果 mapFn
的返回值不是数字类型,将会被转换成 0
。
目前,Uint8ClampedArray.from()
方法不能被转换为通用的 Array.from()
,一些 JavaScript 引擎可能不支持它。