TypedArray.prototype[@@iterator]()
TypedArray
实例的 [@@iterator]()
方法实现了 可迭代协议,并允许大多数需要可迭代的语法使用类型化数组,例如 扩展语法 和 for...of
循环。它返回一个 数组迭代器对象,该 数组迭代器对象 产生类型化数组中每个索引的值。
¥The [@@iterator]()
method of TypedArray
instances implements the iterable protocol and allows typed arrays to be consumed by most syntaxes expecting iterables, such as the spread syntax and for...of
loops. It returns an array iterator object that yields the value of each index in the typed array.
该属性的初始值与 TypedArray.prototype.values
属性的初始值是相同的函数对象。
¥The initial value of this property is the same function object as the initial value of the TypedArray.prototype.values
property.
Try it
语法
参数
返回值
¥Return value
与 TypedArray.prototype.values()
返回值相同:一个新的 可迭代的迭代器对象,它生成类型化数组中每个索引的值。
¥The same return value as TypedArray.prototype.values()
: a new iterable iterator object that yields the value of each index in the typed array.
示例
使用 for...of 循环进行迭代
¥Iteration using for...of loop
请注意,你很少需要直接调用此方法。@@iterator
方法的存在使得类型化数组成为 iterable,像 for...of
循环这样的迭代语法会自动调用该方法来获取要循环的迭代器。
¥Note that you seldom need to call this method directly. The existence of the @@iterator
method makes typed arrays iterable, and iterating syntaxes like the for...of
loop automatically call this method to obtain the iterator to loop over.
const arr = new Uint8Array([10, 20, 30, 40, 50]);
for (const n of arr) {
console.log(n);
}
手动滚动迭代器
¥Manually hand-rolling the iterator
你仍然可以手动调用返回的迭代器对象的 next()
方法,以实现对迭代过程的最大控制。
¥You may still manually call the next()
method of the returned iterator object to achieve maximum control over the iteration process.
const arr = new Uint8Array([10, 20, 30, 40, 50]);
const arrIter = arr[Symbol.iterator]();
console.log(arrIter.next().value); // 10
console.log(arrIter.next().value); // 20
console.log(arrIter.next().value); // 30
console.log(arrIter.next().value); // 40
console.log(arrIter.next().value); // 50
规范
Specification |
---|
ECMAScript Language Specification # sec-%typedarray%.prototype-@@iterator |
浏览器兼容性
BCD tables only load in the browser